R 添加geom_hline+;箱线图的样本大小

R 添加geom_hline+;箱线图的样本大小,r,ggplot2,R,Ggplot2,使用ggplot,我试图 将水平线添加到箱线图 将样本大小添加到x轴 我有以下数据集: 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 添加水平线 我得到以下错误: get(x,envir=this,inherits=inh)中出错(this,…): 映射应该是由aes或aes_字符串创建的未赋值映射

使用
ggplot
,我试图

  • 将水平线添加到箱线图
  • 将样本大小添加到x轴 我有以下数据集:

    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
    
    添加水平线 我得到以下错误:

    get(x,envir=this,inherits=inh)中出错(this,…): 映射应该是由aes或aes_字符串创建的未赋值映射的列表

    我尝试在字符串中添加数据,例如,
    geom\u hline(“ExampleData$Federal\u Guideline)
    ,但我得到了与上面相同的错误

    添加样本大小(n=x轴):
    最后,我想在x轴的标签上添加n(即,
    M2(n=3)
    )。我可以用常规的R来完成这项工作,代码如下:
    names=paste(b$names,”(n=“,b$n,”)))
    ,其中
    b
    =
    boxplot
    函数,但我不知道如何在
    ggplot2
    中执行此操作,您需要在
    geom\u hline
    中显式命名参数,否则它不知道
    0.4
    指的是什么

    所以

    将生成所需的水平线

    要更改x轴上的标签,请使用
    scale\u x\u 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']])
    
    库(plyr)
    
    xlabels非常感谢您清晰的编辑和回答!我添加了+geom_hline(yintercept=0.4,linetype=2,color=“red”)为了得到我想要的那一行。我尝试添加:show_guide=TRUE以显示图例,但没有效果。我是否犯了某种语法错误?另外,“n”编码工作得很好…谢谢。我自己也不会想到这一点。
    ggplot(ExampleData, aes(x = Site,y = Aluminum_Dissolved))+
        stat_boxplot(geom='errorbar', linetype=1)+
        geom_boxplot(fill="pink") +
        geom_hline(yintercept = 0.4)
    
    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']])