重新排序因素时如何使误差条随条形图移动?
How to make the error bars move with the barplot when re-ordering factors?
我正在绘制带有误差条的条形图。这就是我到目前为止所得到的。问题是错误栏没有出现在它们应该出现的地方。如果我不通过删除 df2ID <- factor(df2$ID, level = c('Gary','Jack', 'Alice'))
行来强制 ID 级别,一切看起来都很好。
ID = c(rep('Gary',10), rep('Jack',10), rep('Alice',10))
#Gary has lowest mean and sd, Alice has highest mean and sd
var1 = c(rnorm(1:10)*1+10,rnorm(1:10)*10+20, rnorm(1:10)*100+30)
df <-data.frame(ID = ID, var1 = var1)
df2 <- ddply(df, 'ID', summarise, mean = mean(var1), sd = sd(var1))
df2$ID <- factor(df2$ID, level = c('Gary','Jack', 'Alice'))
limits <- aes(ymax = df2$mean + df2$sd, ymin = df2$mean - df2$sd)
ggplot(df2, aes(y=mean, x=ID))+geom_bar(stat='identity')+
geom_errorbar(limits)+
facet_grid(.~ID)
但我确实需要保留该行,以便我可以重新排列面板的顺序。我怎样才能让错误栏也重新排序?
你永远不应该将 data.frame$column
与 ggplot 一起使用,它会强制将完整向量应用于 ggplot,绕过可以了解分组等的 data
参数。在一些基本情节中这无关紧要,但如果你分面,它几乎总是一个大问题。
所以,为了解决你的问题,不要试图在剧情前指定limits
。只需删除该行并将相同的代码(没有 df$
)放入 geom_errorbar
:
ggplot(df2, aes(y = mean, x = ID))+
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd)) +
facet_grid(. ~ ID)
如果您正在使用分面并且不希望在每个面板和每个 x 轴上列出每个 ID,您可以设置,例如在原始 aes()
中说 x = "a"
。
我正在绘制带有误差条的条形图。这就是我到目前为止所得到的。问题是错误栏没有出现在它们应该出现的地方。如果我不通过删除 df2ID <- factor(df2$ID, level = c('Gary','Jack', 'Alice'))
行来强制 ID 级别,一切看起来都很好。
ID = c(rep('Gary',10), rep('Jack',10), rep('Alice',10))
#Gary has lowest mean and sd, Alice has highest mean and sd
var1 = c(rnorm(1:10)*1+10,rnorm(1:10)*10+20, rnorm(1:10)*100+30)
df <-data.frame(ID = ID, var1 = var1)
df2 <- ddply(df, 'ID', summarise, mean = mean(var1), sd = sd(var1))
df2$ID <- factor(df2$ID, level = c('Gary','Jack', 'Alice'))
limits <- aes(ymax = df2$mean + df2$sd, ymin = df2$mean - df2$sd)
ggplot(df2, aes(y=mean, x=ID))+geom_bar(stat='identity')+
geom_errorbar(limits)+
facet_grid(.~ID)
但我确实需要保留该行,以便我可以重新排列面板的顺序。我怎样才能让错误栏也重新排序?
你永远不应该将 data.frame$column
与 ggplot 一起使用,它会强制将完整向量应用于 ggplot,绕过可以了解分组等的 data
参数。在一些基本情节中这无关紧要,但如果你分面,它几乎总是一个大问题。
所以,为了解决你的问题,不要试图在剧情前指定limits
。只需删除该行并将相同的代码(没有 df$
)放入 geom_errorbar
:
ggplot(df2, aes(y = mean, x = ID))+
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd)) +
facet_grid(. ~ ID)
如果您正在使用分面并且不希望在每个面板和每个 x 轴上列出每个 ID,您可以设置,例如在原始 aes()
中说 x = "a"
。