【问题标题】:barplot x-axis labels with hierarchical grouping variables in separate rows条形图 x 轴标签,在单独的行中具有分层分组变量
【发布时间】:2013-09-12 23:54:59
【问题描述】:

在 Excel 中,数据组织如下:

                                              Bare NP                   Singular-Marked NP               Plural-Marked NP   
                                    BrP Speakers    AmE Speakers    BrP Speakers    AmE Speakers    BrP Speakers AmE Speakers
Plural Interpretation               0.005747126 0.006896552         0.194117647 0.124567474         0.872093023 0.985815603
Plural & Singular Interpretation    0.649425287 0.910344828         0.029411765 0.051903114         0.127906977 0.014184397
Singular Interpretation             0.344827586 0.082758621         0.776470588 0.823529412         0           0

我能够生成如下所示的堆叠条形图:

是否有一种简单的方法可以重现将 x 轴划分为单独条件的方式(、“Bare NP”、“Singular-Marked NP”和“Plural-Marked NP") 使用R?

目前我能想到的只有这个:

pluralInterp <- c(0.005747126,0.006896552,0.194117647,0.124567474,0.872093023,0.985815603)

pluralAndSingInterp <- c(0.649425287,0.910344828,0.029411765,0.051903114,0.127906977,0.014184397)

singInterp <- c(0.344827586,0.082758621,0.776470588,0.823529412,0,0)

a  <- rbind(pluralInterp,pluralAndSingInterp,singInterp)

colnames(a) <- c("Bare NP ~ BrP Speakers",
                 "Bare NP ~ AmE Speakers",
                 "Singular-Marked NP ~ BrP Speakers",
                 "Singular-Marked NP ~ AmE Speakers",
                 "Plural-Marked NP ~ BrP Speakers",
                 "Plural-Marked NP ~ AmE Speakers"
                 )

barplot(a,
        col=c("blue","red","purple"),
        ylab="Frequency of Interpretation",
        xlab="Form of NP and Native Language",
        main="Frequency of BrP and AmE Interpretations of NPs in Neutral Environments"
        )

这会产生以下图表:

【问题讨论】:

  • 我知道这并不完全是需要的,但我只是 pasted 字符串来制作 x 轴并保留我使用 match(factorVar, levels(factorVar)) 在 @ 内产生显式排序的因素的顺序987654328@函数。

标签: r axis-labels bar-chart


【解决方案1】:

稍微手动调整页边距并调用axis() 两次即可到达。 保存像 bp &lt;- barplot(...) 这样的条形图会保存每个条形的中点以供将来参考。

oldpar <-par(mar=c(7,5.1,4.1,2.1))

bp <- barplot(a,
        col=c("blue","red","purple"),
        ylab="Frequency of Interpretation",
        xlab="",
        main="Frequency of BrP and AmE Interpretations \n of NPs in Neutral Environments",
        axisnames=FALSE
       )

然后您可以使用存储在bp 中的值来正确对齐。您可以使用line=... 参数将组和子组标签对齐到axis()

avgpts <- tapply(bp,rep(1:3,each=2),mean)
grps <- c("Bare NP","Singular-Marked NP","Plural-Marked NP")
subgrps <- c("BrP","AmE")
axis(1,at=bp,labels=rep(subgrps,3), cex.axis=0.7)
axis(1,at=avgpts,labels=grps, cex.axis=0.7,line=1.5,lwd=0)

title(xlab="Form of NP and Native Language",line=4.5)

导致:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2021-12-19
    • 2014-07-07
    • 2013-12-13
    相关资源
    最近更新 更多