我的数据框如下:
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
我想在一个ggplot中输入按MEDIUM排序的NITRAT,SILI和PHOSPHAT(带有误差条)的值。总之,这样的事情(但也有错误条): 为此,我尝试了融化功能:
df <- melt(nut, id.vars='MEDIUM')
但是使用此函数后不允许我使用facet_grid
ggplot() +
geom_bar(data=df, aes(x=MEDIUM, y=value, fill=MEDIUM),
stat="identity", colour="black") + facet_grid(~TREAT)
答案 0 :(得分:2)
你在这里要清理一些问题:
首先,只有你想要&#34;堆叠&#34;的列。 (即,用于fill
审美)不应该在id.vars
:
df <- melt(nut, id.vars=c('MEDIUM','NUMBER','DATE','DAY','TREAT')
尝试使用id.vars
的不同组合的上述代码,以获得它的工作原理。
fill=variable
现在将为三种测量类型(NITRAT,SILI和PHOSPHAT)中的每一种提供条形图。 TREAT
仍然是融合数据框中的一列,因为它是id.vars
之一,因此您可以将其用于分面。
另一个问题是,您实际上希望条形图是进入该条形图的所有值的平均值。所以你不想要stat="identity"
。相反,使用stat_summary
计算均值并将其绘制为条形。
要添加错误栏,请使用另一个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(. ~ TREAT) +
theme_bw()
对于这样的情节,积分可能比酒吧更好。在这里,我们首先绘制误差线而不是秒,因为我们想要点&#34;在&#34;之上。酒吧。它在这里不重要,因为它们都是相同的颜色,但我是出于习惯而做的,因为我经常对错误条使用不同的颜色或透明度:
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()