I was wondering how it is possible to add values into an existing plot. The following code plots a model I estimated.

modelplot(model, coef_omit = "^(?!.*xyz)") +
geom_vline(xintercept = 0, linetype = "dashed", color = "red") +
scale_y_discrete(labels = c(seq(1900, 1904, by = 1), seq(1906, 1910, by = 1)))

Now I would like to add a point at x = 0, y = 5. If I use

geom_point(aes(x = 0, y = 1905), color = "black")

the point is added in the very beginning of the graph at y = 1900 and the other values shift back.

How do I add the point in the middle of my graph at exactly the values I want it at?

The problem arises as I estimated a model where the year 1905 is the treatment year and thus normalized to 0. The coefficient is, therefore, also 0. There is certainly a better way of estimating the model such that the value for 1905 is included in the model, but in my current solution I have to add the point manually...

generally speaking , to plot different data points than you previously plotted with ggplot its as easy as providing a new data argument to a following geom.
Here is an example

library(ggplot2)
df_1 <- data.frame(x=1:20,
y=1:20)
ggplot(data=df_1) +
aes(x=x,y=y) +
geom_line() + # next add a datapoint by passing new data
geom_point(data=data.frame(x=10,
y=12),
color="red")

In the meantime I tried to achieve the desired result through a different channel: I created a df and loaded the coefficients as well as the confidence intervals in. I added the missing year with the coefficient 0 and conf. int. 0.

Now I can plot the values perfectly, but the error bars appear to all be the same size... Can someone explain to me why that is?

I dont know what modelplot is , or how it constructs a ggplot. I assumed it would set x and y aes() , but maybe it doesnt; or maybe it does and then unsets them. if it doesnt it might be up to you to set it.

aes(x=x,y=y)

In general its hard to answer technical questions about what code should be on data we don't have. Reprex is best practice in question answering as it reduces friction in finding solutions.

My other approach has worked. The issue lies in the standard errors themselves... I will now try to figure out why they are calculated falsely and will most likely be back with another post...