【发布时间】:2021-01-04 09:31:51
【问题描述】:
我有一个使用以下代码生成的箱线图,在检查数据集后,这里的所有值都是正确的。
myplot <- inDATA %>% filter(PARAMCD=="param1") %>%
ggplot(aes(x=ACTARMCD,y=AVAL,fill=ACTARMCD))+
geom_boxplot()+
stat_summary(fun.y=mean,na.rm=TRUE,shape=25,col='black',geom='point')
我想生成第二个箱线图,通过应用不同的变量作为填充,将 x 变量分成不同的组。我使用以下代码,但图中显示的值不正确。
myplot <- inDATA %>% filter(PARAMCD=="param1") %>%
group_by(ACTARMCD, RESPFL) %>%
ggplot(aes(x=ACTARMCD,y=AVAL))+
geom_boxplot(aes(fill=RESPFL))
但是,当我使用此代码生成条形图时,数字是正确的。
myplot <- inDATA %>%
filter(PARAMCD=="param1") %>%
group_by(ACTARMCD,RESPFL) %>%
dplyr::mutate(AVAL = mean(AVAL, na.rm=TRUE)) %>%
ggplot(aes(x=ACTARMCD,y=AVAL,fill=RESPFL))+
geom_bar(stat="identity",position="dodge")
谁能帮我理解我在第二个箱线图上做错了什么?
【问题讨论】:
-
我无法使用与您的数据相似的随机生成的数据来重现这一点。你能通过
dput()分享你的inDATA吗?我曾经复制的按预期工作的是:inDATA <- data.frame(AVAL = rnorm(500,11000,5000), ACTARMCD = sample(c("GROUP_A","GROUP_B"), 500, replace = T), PARAMCD = "param1", RESPFL = sample(c("N","Y"), 500, replace = T)) -
@juljo,很遗憾,我无法上传任何数据,因为它是公司的专有数据。但是,我最终使用下面的代码从 ggplot 切换到 plotly,现在可以按预期工作。有人知道为什么 ggplot 不能在这里工作吗?
myplot <- inDATA %>% filter(PARAMCD=="param1") %>% plot_ly(x = ~ACTARMCD, y = ~AVAL, color = ~RESPFL, type = "box",boxmean=TRUE) %>% layout(boxmode = "group") -
我怀疑任何人都可以在无法重现问题的情况下给出明确的解释,但值得一提的是,ggplot 中的箱线图代码不需要
group_by(x_variable, fill_variable)行。