你如何订购GGPLOT2 geom_bar内的填充颜色(How do you order the f

2019-07-21 02:22发布

我打电话的ggplot功能

ggplot(data,aes(x,y,fill=category)+geom_bar(stat="identity")

其结果是与对应的类别不同的​​颜色填充条的barplot。 但是颜色的排序是不是从酒吧到酒吧一致。 说有粉红色,绿色和蓝色。 一些酒吧去粉红色,绿色,蓝色,从下到上,一些走绿色,粉红色,蓝色。 我没有看到任何明显的模式。

这些排序是如何选择的? 我怎样才能改变呢? 最起码,我怎样才能使ggplot选择一致的排序?

类的(x,y和类别)分别为(整数,数字和因子)。 如果我让类别的排序因素,它不会改变此行为。

有人知道怎么修这个东西吗?

重复的例子:

dput(data)

structure(list(mon = c(9L, 10L, 11L, 10L, 8L, 7L, 7L, 11L, 9L, 
10L, 12L, 11L, 7L, 12L, 8L, 12L, 9L, 7L, 9L, 10L, 10L, 8L, 12L, 
7L, 11L, 10L, 8L, 7L, 11L, 12L, 12L, 9L, 9L, 7L, 7L, 12L, 12L, 
9L, 9L, 8L), gclass = structure(c(9L, 1L, 8L, 6L, 4L, 4L, 3L, 
6L, 2L, 4L, 1L, 1L, 5L, 7L, 1L, 6L, 8L, 6L, 4L, 7L, 8L, 7L, 9L, 
8L, 3L, 5L, 9L, 2L, 7L, 3L, 5L, 5L, 7L, 7L, 9L, 2L, 4L, 1L, 3L, 
8L), .Label = c("Down-Down", "Down-Stable", "Down-Up", "Stable-Down", 
"Stable-Stable", "Stable-Up", "Up-Down", "Up-Stable", "Up-Up"
), class = c("ordered", "factor")), NG = c(222614.67, 9998.17, 
351162.2, 37357.95, 4140.48, 1878.57, 553.86, 40012.25, 766.52, 
15733.36, 90676.2, 45000.29, 0, 375699.84, 2424.21, 93094.21, 
120547.69, 291.33, 1536.38, 167352.21, 160347.01, 26851.47, 725689.06, 
4500.55, 10644.54, 75132.98, 42676.41, 267.65, 392277.64, 33854.26, 
384754.67, 7195.93, 88974.2, 20665.79, 7185.69, 45059.64, 60576.96, 
3564.53, 1262.39, 9394.15)), .Names = c("mon", "gclass", "NG"
), row.names = c(NA, -40L), class = "data.frame") 

ggplot(data,aes(mon,NG,fill=gclass))+geom_bar(stat="identity")

Answer 1:

你需要指定order的审美也是如此。

ggplot(data,aes(mon,NG,fill=gclass,order=gclass))+
    geom_bar(stat="identity")

这可能是也可能不是一个错误 。



Answer 2:

在ggplot2_2.0.0开始, order审美不再可用。 要获得与填充颜色排序堆的图形,你可以简单地通过你想订购的分组变量责令数据集。

我经常使用arrangedplyr这一点。 在这里,我下令由数据集fill因数内ggplot调用,而不是创造一个有序的数据集,但要么将正常工作。

library(dplyr)

ggplot(arrange(data, gclass), aes(mon, NG, fill = gclass)) +
    geom_bar(stat = "identity")

这是很容易在基础R完成,当然,采用经典的order用提取物括号:

ggplot(data[order(data$gclass), ], aes(mon, NG, fill = gclass)) +
    geom_bar(stat = "identity")

随着现在期望的顺序两种情况下所产生的情节:

ggplot2_2.2.0更新

在ggplot_2.2.0,填写顺序基于因子水平的顺序。 默认顺序将绘制在堆栈上而不是底部上方的第一级。

如果你想,你可以使用堆栈底部的第一级reverse = TRUEposition_stack 。 请注意,您还可以使用geom_col作为快捷方式geom_bar(stat = "identity")

ggplot(data, aes(mon, NG, fill = gclass)) +
    geom_col(position = position_stack(reverse = TRUE))


Answer 3:

如需订购,您必须使用levels参数,并告知订单。 像这样:

data$gclass
(data$gclass2 <- factor(data$gclass,levels=sample(levels(data$gclass)))) # Look the difference in the factors order
ggplot(data,aes(mon,NG,fill=gclass2))+geom_bar(stat="identity")


Answer 4:

您可以更改使用的颜色scale_fill_功能。 例如:

ggplot(dd,aes(mon,NG,fill=gclass)) + 
  geom_bar(stat="identity") + 
  scale_fill_brewer(palette="blues")

要获得一致的订货bars ,那么你就需要对数据进行排序框架:

dd = dd[with(dd, order(gclass, -NG)), ]

为了改变图例的顺序,改变gclass因素。 因此,像:

dd$gclass= factor(dd$gclass,levels=sort(levels(dd$gclass), TRUE))



文章来源: How do you order the fill-colours within ggplot2 geom_bar