使用以R为底的因子列表的堆叠条形图

w9apscun  于 2023-04-27  发布在  其他
关注(0)|答案(2)|浏览(125)

我希望制作一个堆叠条形图来显示两个因素。我可以在这个网站上找到解决这个问题的问题和答案,所有这些问题都可以使用矩阵格式的数据,并使用ggplot2。我的数据是在观察列表中,如下所示:

mydata = data.frame(V1=c("A","B","B","C","C"), V2=c("X","X","Y","Z","Z"))

我想在图的x轴上显示V1的类别,但堆叠起来显示每个条形图中V2的比例。
我可以使用plyr库中的“count”函数来查找每个观察的频率

library(plyr)
mydata.count = count(mydata)

但是我不知道如何构造我的barplot命令来按V1的级别对数据进行分组:barplot(mydata.count$freq)将V1和V2的所有组合分隔为单独的条。
如果可能,我想使用基本的R条形图函数创建此图,以便在视觉上与研究中的其他图一致。

kqlmhetl

kqlmhetl1#

使用table创建V1V2的所有组合的计数列联表。然后,使用barplot创建堆叠条形图。当与矩阵一起使用时,barplot创建堆叠垂直条形,其中列显示在x轴上-因此可能需要转置数据。

m = t(table(mydata))

colors = c("red", "green", "blue")
graphics.off()
windows(8, 6)
barplot(m, col = colors)
legend("topleft", legend = row.names(m), fill = colors)

jckbn6z7

jckbn6z72#

以下是ggplot的另一种可能性:

ggplot(as.data.frame(table(mydata)), aes(x=V1, y=Freq, fill=V2)) + geom_bar(stat="identity")

ggplot(as.data.frame(table(mydata)), aes(x=V2, y=Freq, fill=V1)) + geom_bar(stat="identity")

相关问题