在单独的行中具有分层分组变量的条形图x轴标签 [英] barplot x-axis labels with hierarchical grouping variables in separate rows

查看:130
本文介绍了在单独的行中具有分层分组变量的条形图x轴标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Excel中,数据的组织方式如下:

In Excel, with data organized like so:

                                              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

我能够制作一个看起来像这样的堆叠式条形图:

I am able to produce a stacked barchart that looks like this:

是否有一种简单的方法可以将x轴划分为单独的条件(,裸NP",单标记NP"和复数标记") NP)使用R?

Is there an easy way to reproduce the way that the x-axis is partitioned into the separate conditions (i.e., "Bare NP", "Singular-Marked NP", and "Plural-Marked NP") using 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"
        )

会产生以下图形:

推荐答案

手动调整边距并两次调用axis()可以使您到达那里. 保存类似bp <- barplot(...)的条形图将保存每个条形的中点,以备将来参考.

A bit of manual adjustment of the margins and calling axis() twice can get you there. Saving a barplot like bp <- barplot(...) saves the midpoints of each bar for future reference.

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中存储的值正确对齐内容.您可以使用axis()

You can then use the values stored in bp to align things properly. You can align the group and sub-group labels using the line=... argument to 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)

结果:

这篇关于在单独的行中具有分层分组变量的条形图x轴标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆