2017-09-26 13 views
1

ggplotのバーに色付けをしようとしていますが、問題があります。誰かがfillパラメータとscale_colourパラメータを正しく使用する方法を説明できますか?ggplotの塗りつぶしと縮尺表示

library(ggplot2) 

df<-data.frame(c(80,33,30),c("Too militarized","Just doing their job","Unfairly tarnished by a few"),c("57%","23%","21%")) 
colnames(df)<-c("values","names","percentages") 

ggplot(df,aes(names,values))+ 
    geom_bar(stat = "identity",position = "dodge",fill=names)+ 
    geom_text(aes(label=percentages), vjust=0)+ 
    ylab("percentage")+ 
    xlab("thought")+ 
    scale_colour_manual(values = rainbow(nrow(df))) 

barplot(c(df$values),names=c("Too militarized","Just doing their job","Unfairly tarnished by a few"),col = rainbow(nrow(df))) 

答えて

1

barplot例を作業する主な問題は、あなたがgeom_bar()aesへの呼び出し内fillを持っていないということです。データから色のようなビジュアルにマッピングするときは、内部がaes()である必要があります。

オプション1(なし伝説):あなたはaes()または単に直接色を塗りつぶし指定し、代わりのnames使用するかラップfill=namesによってこの問題を解決することができ、

ggplot(df, aes(names, values)) + 
    geom_bar(stat="identity", fill=rainbow(nrow(df))) + 
    ylab("percentage") + 
    xlab("thought") 

オプション2(伝説のデータからマッピング理由色に):両方のケースでは、明示的順あなたワットでバーを得るために先にggplotへの呼び出しのdf$namesを考慮したい場合がありますことを

ggplot(df, aes(names, values)) + 
    geom_bar(stat="identity", aes(fill=names)) + 
    ylab("percentage") + 
    xlab("thought") + 
    scale_fill_manual(values=rainbow(nrow(df))) 

注意蟻。

+0

両方のソリューションを提供してくれてありがとう - 本当に助かりました! – Rilcon42

関連する問題