2014-09-11 149 views
0

我手动设置的GGPLOT2我柱状图的顺序,所以他们不只是按字母顺序列表使用类似左至右:在GGPLOT2改变颜色填充为了

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

后来,当我设置颜色为

p + scale_fill_grey() 

酒吧的颜色按照字母顺序最深到最浅。我可以让他们按顺序从“第二”到“第一”到“第三”?或者甚至将不同的酒吧分组为相同的颜色?

回答

0

我不完全确定你在问什么;我很困惑。但是,如果您使用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

+0

这是有帮助的。手动着色正是我想要手动着色的。但至于自动填色,我在寻找稍微不同的东西。在你的例子中,第一个情节有黑色的灰色白色。然后当你重新排列酒吧时,伦敦仍然是黑色,马德里灰色和巴黎白色。有没有办法自动让最左边的酒吧是黑色的,中间是灰色和最右边的白色,无论您将酒吧放在什么顺序?谢谢。 – 2014-09-11 04:25:31

+0

@TheNightman现在你想让它变得清晰。如果这是你想要的,你想在第二个例子中使用'scale_fill_grey()'。然后,左边的任何城市都会有你想要的最黑的颜色。 – jazzurro 2014-09-11 04:44:27

+0

所以'scale_fill_grey()'是我正在使用的,但是它会按照字母顺序填充条形,而不管它们沿着x轴的顺序。有什么我需要传递给'scale_fill_grey()'使它从左到右填充? – 2014-09-11 15:09:40