![](/img/trans.png)
[英]R - ggplot2 - Add arrow if geom_errorbar outside limits when x-axis is a factor variable
[英]In ggplot2 - how to ensure geom_errorbar displays bar limits for all points when controlling x-axis with xlim()
我正在使用ggplot2
生成一個相對於整數值預測變量的相當簡單的比例圖。 我正在使用 geom_errorbar 來顯示每個點估計的不確定性。
例如
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)
出於美學原因,我使用 xlim() 來設置 x 軸限制(就像你一樣)。 但這會刪除指示最小和最大 x 值處誤差線限制的水平線。 我認為這是因為ggplot2
試圖繪制一條位於繪圖區域之外的線(函數調用從geom_path
打印一些關於缺失值的警告)。
我可以事先清理不需要的行的數據,或者在ggplot
調用中包含一個subset
語句,但我覺得在放大繪圖時有/應該是一個更清潔的解決方案。 有任何想法嗎?
有點hacky,但它似乎有效:
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))
您可以嘗試減小誤差線的寬度。
ggplot(mydata,aes(x=my_x)) + geom_point(aes(y=my_y)) +
geom_errorbar(aes(ymin=my_lower, ymax=my_upper),width=0.25)
使用日期刻度執行此操作時遇到了類似的問題,我在其中指定了以下參數:
scale_x_date(date_labels="%Y %B",
date_breaks = "1 month",
limits=as.Date(c("2020-03-01", "2021-11-01"), format="%y-%m-%d"),
)
最終解決了這個問題:
scale_x_date(date_labels="%Y %B",
# date_breaks = "1 month",
limits=as.Date(c("2020-03-01", "2021-11-01"), format="%y-%m-%d"),
breaks = seq(as.Date("2020-03-01"), as.Date("2021-11-01"), by="months"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.