ggplot:x轴条形图上的多个变量

时间:2016-02-09 12:39:02

标签: r ggplot2 bar-chart geom-bar

我在过去几周内一直试图设置一个我需要的图表。我想尝试在" 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))

1 个答案:

答案 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()可能是一个好主意,因为这些值彼此非常不同。