如何将此数据绘制为分组条形图?

时间:2014-08-26 07:15:37

标签: r ggplot2 bar-chart

我想在R

中绘制这些数据
item    response    Freq
count   -99         0.000
count   -88         0.000
count   -77         0.050
count   1           0.039
count   2           0.117
count   3           0.408
count   4           0.385
read    -99         0.011
read    -88         0.000
read    -77         0.117
...      ...        ...

x轴应该是项目(所以计数,读取等,共19项),y轴应该是每个响应的频率(所以1,2,3,4,-77,-88, - 99)。所以这将是一个"分组" barchart本质上。

我无法使用R绘制此分组条形图。到目前为止,我尝试使用:

library(ggplot2)
ggplot(Data, aes(response, Freq*100, color = item)) +
  geom_point(size = 4) + geom_line(size = 1, aes(group = item)) + ggtitle("Items") + 
  ylab("Frequencies %") + xlab("responses") 


require(lattice)
barchart(Freq*100 ~ item, groups=response, Data, xlab="Items", ylab="Frequencies %")

非常感谢!

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

library(ggplot2)
ggplot(dat, aes(x=1, y=Freq, fill=factor(response))) + 
  geom_bar(stat="identity", position="dodge") +
  facet_grid(~item) +
  scale_fill_grey() +
  theme_bw()

enter image description here

position="dodge"并排对齐条形图。 facet_grid使用每个“项目”的新图(即由名为“item”的变量指示的每个组)。 scale_fill_grey()将灰色应用于条形,theme_bw()删除灰色背景。

答案 1 :(得分:0)

试试这个:

dat <- read.table(header=TRUE, text="item    response    Freq
count   -99         0.000
count   -88         0.000
count   -77         0.050
count   1           0.039
count   2           0.117
count   3           0.408
count   4           0.385
read    -99         0.011
read    -88         0.000
read    -77         0.117")

使用ggplot2

library(ggplot2)
ggplot(dat, aes(x=item, y=Freq, fill=factor(response))) + 
    geom_bar(stat="identity")

enter image description here

答案 2 :(得分:0)

尝试黑白灰色图表:

barplot(with(ddf, tapply(Freq , list(response, item), mean)), beside=T, xlab="item", ylab="Freq")

enter image description here