首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绘制多个column+facet_grid (ggplot)

绘制多个column+facet_grid (ggplot)
EN

Stack Overflow用户
提问于 2016-07-24 23:50:21
回答 1查看 108关注 0票数 1

我的数据框架是这样的:

代码语言:javascript
运行
复制
    NUMBER  MEDIUM  DATE    DAY TREAT   NITRAT  SILI    PHOSPHAT
1   NUT1    15/07/2016  two NBNA    20.831  20.946  0.518
2   NUT2    15/07/2016  two NBNA    26.594  25.075  1.059
3   NUT3    15/07/2016  two NBNA    47.565  42.088  7.733
4   NUT4    15/07/2016  two NBNA    61.320  53.264  6.331
5   NUT5    15/07/2016  two NBNA    64.918  52.058  4.889
6   NUT1    15/07/2016  two NBNA    19.876  22.000  0.852
7   NUT2    15/07/2016  two NBNA    29.642  29.572  1.184
8   NUT3    15/07/2016  two NBNA    37.969  35.015  4.293
9   NUT4    15/07/2016  two NBNA    56.724  45.986  6.880
10  NUT5    15/07/2016  two NBNA    66.006  53.175  5.893
11  NUT1    15/07/2016  two NBNA    21.835  20.710  0.770
12  NUT2    15/07/2016  two NBNA    25.996  26.213  1.149
13  NUT3    15/07/2016  two NBNA    48.526  46.167  3.977
14  NUT4    15/07/2016  two NBNA    56.767  47.089  6.684
15  NUT5    15/07/2016  two NBNA    64.841  54.039  6.628
16  NUT1    15/07/2016  two NBA1    13.179  18.723  0.826
17  NUT2    15/07/2016  two NBA1    18.631  23.537  0.859

我想要放入一个by图,数值的硝基,硅和PHOSPHAT(与错误栏)排序的介质。总之,类似这样的内容(但也带有错误条):

为此,我尝试了函数熔融:

代码语言:javascript
运行
复制
df <- melt(nut, id.vars='MEDIUM')

但是,使用此函数后不允许我使用facet_grid。

代码语言:javascript
运行
复制
ggplot() +
  geom_bar(data=df, aes(x=MEDIUM, y=value, fill=MEDIUM),
           stat="identity", colour="black") + facet_grid(~TREAT)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-25 00:28:02

你有几个问题要解决:

  1. 首先,只有您想要“堆栈”的列(即用于fill美学)不应该在id.vars中: df <-融化(DATE,id.vars=c('MEDIUM','NUMBER','DATE','DAY',‘DATE’) 使用id.vars的不同组合尝试上面的代码,以获得一些关于它是如何工作的直觉。
  2. fill=variable现在将为三种类型的度量(NITRAT、SILI和PHOSPHAT)中的每一种提供条。TREAT仍然是融化数据框架中的一个列,因为它是id.vars之一,所以您可以使用它进行面设置。
  3. 另一个问题是,看起来你实际上希望条形图是进入该栏的所有值的平均值。所以你不想要stat="identity"。相反,使用stat_summary计算方法并将它们绘制成条形图。
  4. 若要添加错误条,请使用对stat_summary的另一个调用。我使用了引导置信区间(mean_cl_boot)。对于经典置信区间,使用mean_cl_normal。 pd=position_dodge(0.8) ggplot(df,aes(x=MEDIUM,y=value,fill=variable)) + stat_summary(fun.y=mean,geom="bar",width=0.7,position=pd) + stat_summary(fun.data=mean_cl_boot,geom="errorbar",position=pd,width=0.3) + facet_grid(.+ theme_bw()

对于这样的情节,积分可能比酒吧更好。在这里,我们首先绘制错误条,而不是第二个,因为我们希望点“在”条的顶部。这并不重要,因为两者的颜色是相同的,但我这样做是出于习惯,因为我经常对错误栏使用不同的颜色或透明度:

代码语言:javascript
运行
复制
pd=position_dodge(0.4)

ggplot(df, aes(x=MEDIUM, y=value, colour=variable)) +
  stat_summary(fun.data=mean_cl_boot, geom="errorbar", position=pd, width=0.3) +
  stat_summary(fun.y=mean, geom="point", position=pd) + 
  facet_grid(. ~ TREAT) +
  theme_bw()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38557987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档