2017-12-11 17 views
0

geom_textを使用して棒グラフにラベルと色を追加する際に問題が発生します。ggplot2棒グラフのラベルと色

は、ここでデータの例です:ラベル一緒に

ラベルバンチ、むしろそこよりも各バーの末尾に数字であることのためData

Season Answer n  freq   
Spring Yes  103 0.77      
Spring No  30  0.23 
Winter Yes  75  0.85 
Winter No  13  0.15     

(chart example)

ggplot(data = a, aes(x = Answer, y = freq)) + 
    geom_bar(aes(fill = season),stat = "identity", position = "dodge") + 
    theme_minimal() + 
    scale_y_continuous(labels = scales::percent, limits = c(0, 1)) + 
    geom_text(aes(label = freq, group = Answer), 
       position=position_dodge(width = 0.5), vjust = -1.5) + 
    ggtitle(label = "x") + 
    labs (x = "%") + 
    coord_flip() 

私はむしろそれらが互いに重なり合うより各バーの終わりに占める割合、があるようにしたいと思います。

また、割合を* 100として表示したいと思います。だから、むしろ色

については0.77

より77.0パーセントは、私はここだけでなく、標準的な青と赤から色を改正したいと思います。 4つの色を持つパレットを追加すると、各バーは「春」と「冬」の色ではなく、個別色(chart example 2)になります。これを行うと、すべてのラベルと伝説が崩れてしまうことがわかります。

私はこれを取得する2色のカラーパレットを使用する場合:、テキスト覆い焼きを修正group美学をドロップするとかわすの量を調整するには

Error: Aesthetics must be either length 1 or the same as the data (4): fill, x, y 
ggplot(data = a, aes(x = Answer, y = freq)) + 
    geom_bar(aes(fill = "palette"),stat = "identity", position = "dodge") + 
    theme_minimal() + 
    scale_y_continuous(labels=scales::percent,limits= c(0, 1))+ 
    geom_text(aes(label = freq, group = Answer), 
       position = position_dodge(width = 0.5), 
       vjust = -1.5) + 
    ggtitle(label = "x") + 
    labs (x = "%") + 
    coord_flip() 
+0

、私はあなたが 'group'変数は "季節" ではなく、 "答え" になりたいと思います。 – aosmith

+0

'scale_fill_manual'によってscale_fill_manual(値= c(冬="紫 "、春="緑 "))で塗りつぶしの色を変更する必要があります。 – aosmith

+0

あなたは単にグループの美しさを落とすことができます – alistaire

答えて

0

。塗りつぶしパレットを設定するには、scale_fill_*コールを追加します。問題を避けテキストについては

library(ggplot2) 

a <- data.frame(Season = c("Spring", "Spring", "Winter", "Winter"), 
       Answer = c("Yes", "No", "Yes", "No"), 
       n = c(103L, 30L, 75L, 13L), 
       freq = c(0.77, 0.23, 0.85, 0.15), stringsAsFactors = FALSE) 

ggplot(data = a, aes(x = Answer, y = freq, fill = Season, label = scales::percent(freq))) + 
    geom_col(position = "dodge") + 
    geom_text(position = position_dodge(width = .9)) + 
    scale_y_continuous(labels = scales::percent, limits = c(0, 1)) + 
    scale_fill_brewer(type = 'qual') + 
    theme_minimal() + 
    labs(title = "x", x = "%") + 
    coord_flip() 

+0

ありがとう!それは働いた。 – Mrmoleje

+0

私は0.77から77%をどのように変更できるか知っていますか?私は遊びましたが、私はそれを理解することはできません。 – Mrmoleje

+0

審美的なものを 'label = scales :: percent(freq)'に変更してください。 – alistaire

関連する問題