使用ggplot
,我正在尝试
我有以下数据集:
Site, Aluminum_Dissolved, Federal_Guideline
M1, 0.1, 0.4
M1, 0.2, 0.4
M1, 0.5, 0.4
M2, 0.6, 0.4
M2, 0.4, 0.4
M2, 0.3, 0.4
#Make a boxplot with horizontal error bars
ggplot(ExampleData, aes(x = Site,y = Aluminum_Dissolved))+
stat_boxplot(geom='errorbar', linetype=1)+
geom_boxplot(fill="pink")
#Now want to add guideline value at 0.4 with corresponding "Federal Guideline" in legend, I tried:
geom_hline(0.4)
我收到以下错误:
get(x,envir = this,inherits = inh)中的错误(this,...): 映射应该是由aes或aes_string
创建的未评估映射的列表
我尝试在字符串中添加数据,即geom_hline("ExampleData$Federal_Guideline)
,但我得到与上面相同的错误。
最后,我想将n添加到x轴的标签(即M2 (n=3)
)。我可以使用以下代码在常规R中执行此操作:names=paste(b$names, "(n=", b$n,")"))
,其中b
= boxplot
函数,但我无法弄清楚如何在{{1}中执行此操作}}
答案 0 :(得分:2)
您需要在geom_hline
中明确命名参数,否则它不知道0.4
所指的是什么。
所以
ggplot(ExampleData, aes(x = Site,y = Aluminum_Dissolved))+
stat_boxplot(geom='errorbar', linetype=1)+
geom_boxplot(fill="pink") +
geom_hline(yintercept = 0.4)
将生成所需的水平线。
要更改x轴上的标签,请使用scale_x_discrete
更改标签
您可以使用
等预先计算这些内容library(plyr)
xlabels <- ddply(ExampleData, .(Site), summarize,
xlabels = paste(unique(Site), '\n(n = ', length(Site),')'))
ggplot(ExampleData, aes(x = Site,y = Aluminum_Dissolved))+
stat_boxplot(geom='errorbar', linetype=1)+
geom_boxplot(fill="pink") + geom_hline(yintercept = 0.4) +
scale_x_discrete(labels = xlabels[['xlabels']])