2017-06-27 3 views
0

は、私はこのようなプロットがあります。ggplot geom_barのNA値のラベルと色を変更しますか?

data <- data.frame(time = c("time1", "time2", "time1"), 
        sex = c("m", "f", NA)) 

ggplot(data = data) + 
    geom_bar(aes(x = time, y = (..count..)/sum(..count..), 
       fill = sex), 
      position = "fill") + 
    scale_y_continuous(name = "percentation", 
        labels = scales::percent) 

を、私はNA値のラベルと色を変更しようとしています。私はここで誰もが問題で私を助けることができる場合は残念ながら、これは動作しませんので、私はお願いしたいと思います

scale_fill_manual(labels = c("m" = "male", 
           "f" = "female", 
           "NA" = "unknown"), 
        values = c("m" = "blue", 
           "f" = "red", 
           "NA" = "green")) 

の追加などscale_fill_manualを使用しましたか? NA値を選択するための特別な単語などがありますか?さらに、"m" = "male"のような直接割り当てを維持し、割り当てを制御するために"male"を書くのではなく、

+0

どの部分は機能しませんか?色やラベルは? 'scal_fill_manual function'をチェックすると、あなたが望む色を与えることができる' na.value'という引数があることがわかります。 –

+0

そうですね、ありがとう。しかし、ラベルと色の両方を変更したいと思います。 – user5514978

答えて

0

次は私のために働いている:

data <- data.frame(time = c("time1", "time2", "time1"), 
        sex = c("m", "f", NA)) 
data$sex = as.character(data$sex) 

data$sex[is.na(data$sex)] <- "Unknown" 


ggplot(data = data) + 
    geom_bar(aes(x = time, y = (..count..)/sum(..count..), 
       fill = sex), 
      position = "fill") + 
    scale_y_continuous(name = "percentation", 
        labels = scales::percent) 

enter image description here

私はあなたが直接それを行うことができるかどうかわかりません。したがって、NAを何かに変換してから、コードを追加することができます:

scale_fill_manual(labels = c("m" = "male", 
           "f" = "female", 
           "Unknown" = "unknown"), 
        values = c("m" = "blue", 
           "f" = "red", 
           "Unknown" = "green")) 
+0

ありがとう、これは間違いなく私の質問の解決策です。しかし、ggplot-callでラベルを直接変更するオプションもあれば、私は不思議に思っていましたか?背景は、私は多くの変数を持っているので、データ内のすべての変数ではなくプロット内の名前を変更したいと思います。 – user5514978

+0

私は自分の答えを編集しました – AK88

+0

おそらく 'forcats :: fct_explicit_na()'を使用します – Axeman

関連する問題