2014-09-11 121 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