我有一个有多个变量的数据帧,我想知道如何像Excel中的plotting选项那样绘制它们。
下面是一个简单的数据示例:
> V1 V2 V3
1 A 0
1 A 0
1 B 1
1 B 0
1 A 1
2 A 0
2 B 0
2 A 0
2 A 0
2 A 0我想要的是一个带有V1的x轴,当V2为A或B时,一个包含所有V3计数的y轴。
有人能分享一些关于如何做到这一点的想法吗?因为它只能与2*2表一起使用,所以barplot函数似乎不起作用?
谢谢。
编辑:
这个图不是由给定的数据生成的:

将y轴视为V3的百分比,将x轴视为V1,并为每个级别的V2创建条形图。
发布于 2017-03-24 18:23:07
首先,您需要获取一个包含要绘制的值的摘要dataframe。
df <- data.frame(V1 = rep(1:2,each=5), V2 = c("A","A","B", "B", "A", "A", "B","A", "A", "A"),
V3 = c(0,0,1,0,1,0,0,0,0,0))
values <- aggregate(df$V3, list(V1 = df$V1, V2 = df$V2), sum)
# V1 V2 V3
# 1 1 A 1
# 2 2 A 0
# 3 1 B 1
# 4 2 B 0
ggplot(values, aes(x = factor(V1), y = V3, fill = V2))+
geom_bar(stat = "identity", width = 0.2)

或者,如果你不想让它们堆叠在一起的话。添加一些标签。
ggplot(values, aes(x = factor(V1), y = V3, fill = V2))+
geom_bar(stat = "identity", width = 0.2, position = "dodge") +
labs(list(x = "x", y = "count",fill = "group"))

编辑
我试着在dataframe上直接使用ggplot,不做摘要,结果是一样的。
## a little change in V3
df <- data.frame(V1 = rep(1:2,each=5),
V2 = c("A","A","B", "B", "A", "A", "B","A", "A", "A"),
V3 = c(2,0,1,2,1,3,3,8,1,0))
## plot df directly
ggplot(df, aes(factor(V1), V3, fill = V2)) +
geom_bar(stat = "identity", width = 0.2, position = "dodge") +
labs(list(x = "x", y = "count",fill = "group"))

https://stackoverflow.com/questions/42995155
复制相似问题