Ggplot geom_errorbar width при огранке (и scale = "free" )
Я пытаюсь создать граненый сюжет с использованием ggplot и geom_errorbar. Тем не менее, каждый другой фасет может иметь значительно разные диапазоны х, поэтому ширина полосы ошибок не выглядит "хорошей". Здесь MWE:
library(ggplot2)
test <- data.frame( group=rep(c(1,2,3),each=10), ymin=rnorm(30), ymax=rnorm(30))
test$x <- rnorm(30) * (1+(test$group==1)*20)
ggplot( test, aes(x=x, ymin=ymin, ymax=ymax) ) +
geom_errorbar(width=5) + facet_wrap( ~ group, scale="free_x" )
ggplot( test, aes(x=x, ymin=ymin, ymax=ymax) ) +
geom_errorbar(width=.2) + facet_wrap( ~ group, scale="free_x" )
В первом графике строки ошибок для группы 1 выглядят великолепно, но 2 и 3 слишком широки. На втором графике полосы ошибок слишком малы для группы 1. Есть ли простой способ исправить это? Я думаю, мне просто нужно использовать width = 0, но я бы хотел этого избежать.
![First Plot]()
![Second Plot]()
Ответы
Ответ 1
Обходной путь для этой проблемы состоял в том, чтобы добавить к вашему кадру данных новый столбец wd
, который содержит ширину ошибок для каждого уровня.
test <- data.frame( group=rep(c(1,2,3),each=10), ymin=rnorm(30), ymax=rnorm(30))
test$x <- rnorm(30) * (1+(test$group==1)*20)
test$wd<-rep(c(10,0.5,0.5),each=10)
Затем используйте этот новый столбец для установки width=
в geom_errorbar()
. Он должен быть установлен внутри вызова aes()
.
ggplot( test, aes(x=x, ymin=ymin, ymax=ymax) ) +
geom_errorbar(aes(width=wd)) + facet_wrap( ~ group, scale="free_x" )
![enter image description here]()