我在过去几周内一直试图设置一个我需要的图表。我想尝试在" x"上设置多个变量(V2,V5,V6)。轴以及它们如何因另一个条件而异(V4)。
我的数据如下:
v1 v2 v3 v4 v5 v6
2 1 214 2 3 1
2 1 214 2 4 1
3 1 214 2 2 1
4 1 214 2 3 1
1 1 372 1 1 2
3 1 552 1 2 1
我的图表看起来像是底部的图表,但我想尝试制作一个像顶部的图表。 http://imgur.com/a/DQQp9
到目前为止,我的条形图代码是这样的:
ggplot(oll_subset, aes(factor(v2), fill = factor(v4))) +
geom_bar(position = "dodge")
ggplot(oll_subset, aes(factor(v4), fill = factor(v2))) +
geom_bar(position = "dodge")
#NOT WORKING
#graph <- ggplot(oll_subset, aes(v2, v4))
#graph + geom_bar()
#graph + geom_bar(factor(x=v4))
g <- ggplot(oll_subset, aes(v2))
g + geom_bar()
g + geom_bar(aes(fill = v4))
答案 0 :(得分:0)
问题不在于您的绘图,而在于您的数据格式。
目前,您的数据采用宽格式,这意味着每个变量都有一列。
ggplot虽然需要长格式。可以使用melt
包中的reshape2
函数生成此格式。
如果使用默认的id变量melt
,则会产生类似于:
oll.subset.melt <- melt(oll.subset)
| variable | value |
|----------|-------|
| v1 | 2 |
| v1 | 2 |
| v1 | 2 |
[...]
| v5 | 1 |
| v5 | 2 |
绘制数据并且它们看起来应该与您想要的类似:
ggplot(data=oll.subset.melt, aes(value, fill=variable)) + geom_bar(position="dodge", stat="count")
在您的数据集中+ scale_x_log10()
可能是一个好主意,因为这些值彼此非常不同。