我正在努力弄清楚如何在R中制作堆积条形图。
首先,我正在使用的数据来自VCD包
data("Arthritis", package = "vcd")
现在,我只想绘制列改进和处理的图表,显示两个条形图,它们是处理列的两个结果(经过处理,安慰剂)并将改进的列的结果叠加在一起。
我尝试了一些命令,但它一直给我一个错误说:
'height' must be a vector or a matrix
所以我做了以下操作,但它给了我关节炎数据集中所有列的所有结果。
arth <- as.matrix(Arthritis)
barplot(arth,
main="Improvements in Treated vs Placebo",
col=c("green","yellow", "blue"),
xlab="Treatment",
ylab="Frequency")
我不知道该怎么办了。任何帮助或指导都会令人惊叹。
答案 0 :(得分:1)
你的做法有些不对劲。我想你想要这样的东西:
barplot(xtabs(~ Improved + Treatment, data = Arthritis))
答案 1 :(得分:1)
您也可以尝试ggplot
。数据应该在data.frame
中(无需转换为矩阵)。默认geom_bar
计算每组中的案例数(无需制表)。
library(ggplot2)
ggplot(data = Arthritis, aes(x = Treatment, fill = Improved)) +
geom_bar() +
scale_fill_manual(values = c("green","yellow", "blue")) +
ggtitle("Improvements in Treated vs Placebo") +
xlab("Treatment") +
ylab("Frequency")