ggplot2 geom_bar填充美学

时间:2015-02-11 20:47:12

标签: r ggplot2

我有以下代码来绘制不同国家/地区的合同。

Country <- CCOM$Principal.Place.of.Performance.Country.Name
Val <- CCOM$Action_Absolute_Value
split <- CCOM$Contract.Category

ggplot(CCOM, aes(x = Country, y = Val, fill = levels(split))) +
    geom_bar(stat = "identity")

我想要一个简单的堆积条形图,其中条形由合同类别着色,这是变量&#34; split&#34; (即CCOM $ Contract.Category)。

但是,当我运行代码时,它会生成下面的图表:

enter image description here

为什么不将gplot分成三个不同的块?为什么我会在整个图表中分散颜色部分。我尝试过使用因子(分裂)和水平(分裂),但似乎不起作用。也许我把它置于错误的位置。

2 个答案:

答案 0 :(得分:1)

啊,我刚刚意识到发生了什么事。你似乎害怕修改你的数据框,不要!为ggplot创建外部向量是一件麻烦事。而不是将CountryVal创建为宽松向量,而是将它们作为列添加到数据中:

CCOM$Country <- CCOM$Principal.Place.of.Performance.Country.Name
CCOM$Val <- CCOM$Action_Absolute_Value

然后你的情节很好,很简单,你不必担心秩序或其他任何事情。

ggplot(CCOM, aes(x = Country, y = Val, fill = Contract.Category)) +
    geom_bar(stat = "identity")

答案 1 :(得分:0)

正如您所建议的那样order提供了解决方案:

ggplot(CCOM[order(CCOM$split), ], aes(x = Country, y = Val, fill = Contract.Category)) +
   geom_bar(stat = "identity")

我有一个类似的例子,我使用等同于fill作为Contact.Category,但它仍然需要重新排序。