In ggplot2 - how to ensure geom_errorbar displays

2019-07-22 11:57发布

I am using ggplot2 to produce a fairly simple plot of a proportion against an integer valued predictor. I am using geom_errorbar to display uncertainty for each point estimate.

e.g.

require(ggplot2)
mydata <- data.frame(my_x = 70:99, 
                     my_y = seq(0.7,0.3,length.out=30), 
                     my_lower = seq(0.6,0.2,length.out=30), 
                     my_upper = seq(0.8,0.4,length.out=30))

ggplot(mydata,aes(x=my_x)) + geom_point(aes(y=my_y)) +
                           geom_errorbar(aes(ymin=my_lower, ymax=my_upper)) +
                           xlim(70,80)

For largely aesthetic reasons I am using xlim() to set the x-axis limits (as you do). But this removes the horizontal lines indicating the limits of the error bars at the min and max x-values. I presume this is because ggplot2 is trying to draw a line which lies outside of the plot region (the function call prints some warnings from geom_path about missing values).

badggplot http://i59.tinypic.com/2nlvlsn.png

I could clean the data of the unwanted rows beforehand or include a subset statement in the ggplot call, but I feel like there is/should be a cleaner solution when zooming into a plot. Any ideas?

标签: r ggplot2
2条回答
做个烂人
2楼-- · 2019-07-22 12:35

You can try reduce the width of the error bar.

ggplot(mydata,aes(x=my_x)) + geom_point(aes(y=my_y)) +
                           geom_errorbar(aes(ymin=my_lower, ymax=my_upper),width=0.25)
查看更多
Rolldiameter
3楼-- · 2019-07-22 12:36

Bit hacky but it seems to work:

ggplot(mydata,aes(x=my_x)) + geom_point(aes(y=my_y)) +
                           geom_errorbar(aes(ymin=my_lower, ymax=my_upper)) +
                           coord_cartesian(xlim=c(69.5,80.5))
查看更多
登录 后发表回答