0

我有一个数据结构,我需要通过一列中的变量和另一列中的变量来绘制对偶图。例如,假设我有一个调查,其中一个专栏是关于学生对具有“非常同意”、“同意”、“中立”、“不同意”和“非常不同意”选项的班级的感受。在另一列中,我有参加调查的人的年级水平。我将如何整理和绘制这些数据,以便我可以显示一个年级有多少人说“非常同意”,一个年级有多少人说“同意”等等。

示例数据:

set.seed(123)
feelops <- c("strongly agree", "agree", "neutral", "disagree", "strongly disagree")
feelops <- ordered(feelops,levels=feelops)
dat <- data.frame(feel=sample(feelops,100,replace=TRUE) , grade=sample(LETTERS[1:5],100,replace=TRUE))

> head(dat)
               feel grade
1             agree     C
2          disagree     B
3           neutral     C
4 strongly disagree     E
5 strongly disagree     C
6    strongly agree     E
4

2 回答 2

1

使用 abarplot和示例数据,这样的事情可能会起作用:

barplot(
  with(dat,prop.table(table(feel,grade))),
  beside=TRUE,
  xlab="Grade",
  ylab="% Feeling Within Grade Group",
  col=grey((1:5)/5)
)
legend("topright",as.character(feelops),fill=grey(1:5/5))

您可以稍微尝试一下这些选项,但这会给出类似的结果:

在此处输入图像描述

于 2013-07-17T02:04:57.473 回答
1

另一种选择是使用更高级别的绘图包,如ggplot2or lattice。它们比基本包灵活得多。在这里,我barchart用来创建 2 个版本的条形图。第二种用于reshape2以较长格式放置数据,通常更适合此类绘图。

library(lattice) 
library(reshape2)
library(gridExtra)

dat1 <- with(dat,prop.table(table(grade,feel)))
p1 <- barchart(dat1, groups=0)
dat.m <- melt(dat1)
p2 <- barchart(value~grade,groups=feel,data= dat.m, auto.key=TRUE)
grid.arrange(p1,p2)

在此处输入图像描述

于 2013-07-17T02:33:10.523 回答