在ggplot2中更改颜色填充顺序

时间:2014-09-11 02:16:56

标签: r ggplot2

我在ggplot2中手动设置直方图条的顺序,因此它们不会按照从左到右的字母顺序列出:

p + xlim("second", "first", "third")

然后当我用

设置颜色时
p + scale_fill_grey()

条形图按字母顺序着色最暗到最亮。我可以让他们填写#34;第二个"到第一个"到第三个"?或者甚至将不同的条形图组合成相同的颜色?

2 个答案:

答案 0 :(得分:1)

我不完全确定你在问什么;我很迷惑。但是,如果你使用scale_fill_grey(),那么x轴上的第一个将是黑暗的。也就是说,即使您重新排列轴的因子水平,您最终也会看到第一个条形图具有深色。只要我从您的问题中看到,您可能需要手动为条形指定颜色。希望这会让你前进。

# I create a sample data, which you should provide when you ask a question.
location <- c("London", "Paris", "Madrid")
value <- runif(3, 15,30)

foo <- data.frame(location, value, stringsAsFactors = F)
foo$location <- factor(foo$location)

# Colors are assigned in the alphabetical order of the cities.

ggplot(foo, aes(x = location, y = value, fill = location)) +
    geom_bar(stat="identity") +
    scale_fill_manual(values=c("black", "grey", "white"))

enter image description here

现在我改变城市的顺序并绘制另一个数字。但是,颜色仍然按字母顺序分配。

foo$location <- factor(foo$location, levels = c("Paris", "Madrid", "London"))

ggplot(foo, aes(x = location, y = value, fill = location)) +
    geom_bar(stat="identity") +
    scale_fill_manual(values=c("white", "grey", "black"))

enter image description here

答案 1 :(得分:1)

我认为您可以使用limits()中的scale_fill_grey()手动更改颜色的顺序。这应该推翻标准订单,并应用您使用limits()手动设置的订单。

p + scale_fill_grey(limits = c("second", "first", "third"))