2017-03-01 22 views
4

ggplotを生成するために、以下のデータセットとrコードがあります。上記コードのggplotグラデーションの塗りつぶしが機能しない

df = data.frame(Animals = c("Dog", "Cat", "Horse", "Giraffe"), Number =   c(88, 11, 107, 59), 
      Cat = c("A", "A", "B", "B"), 
      Place=c("Place1","Place2")) 
ggplot(df, aes(Animals, Cat, fill=Number)) + 
geom_tile() + 
scale_fill_gradient2(low= "red", high = "green", 
        mid = "orange", 
        midpoint = 50, 
        space = "Lab")+ 
geom_text(label=df$Number)+ 
facet_grid(.~Place) 

出力は、グラフを見れば、グラデーション塗りつぶしをコードに記載されていないよう

enter image description here

、です。 コードごとに、高い数字は緑色でなければなりません。

これについていくつかの専門家の意見が必要です。

答えて

5

グラデーションの塗りつぶしが正しいです。それは不正確なテキスト値です。そのHorseB以下のデータで、例えば、注意は107の値を持っていますが、あなたのプロットでそのタイルのためのテキスト値はgeom_text(aes(label=Number))に11

Animals Number Cat Place 
1  Dog  88 A Place1 
2  Cat  11 A Place2 
3 Horse 107 B Place1 
4 Giraffe  59 B Place2 

の変更です。 geom_text(label=df$Number)を使用すると、地球環境のバージョンdfへのggplot環境の外に達し、値Numberは(データフレームの順序で)88、11、107、59となります。グラフの数値は(左から右に)プロットされます。しかし、aes(label=Number)を用いてマッピングlabelからNumberによって、あなたがggplotのgeomおよび美的マッピングの「自然な」論理によって決定されるように美的labelfill審美的の両方に対応するようにグラフにマッピングされていることを確認します。

ggplot(df, aes(Animals, Cat, fill=Number)) + 
    geom_tile() + 
    scale_fill_gradient2(low= "red", high = "green", mid = "orange", 
         midpoint = 50, space = "Lab")+ 
    geom_text(aes(label=Number)) + 
    facet_grid(.~Place) 

enter image description here

これは、おもちゃの例のように見えるが、私はあなたがファセットときscales="free_x"を使用して空の値のためのスペースを削除ggplot持つことができることも指摘しようと思いました:

ggplot(df, aes(Animals, Cat, fill=Number)) + 
    geom_tile() + 
    scale_fill_gradient2(low= "red", high = "green", mid = "orange", 
         midpoint = 50, space = "Lab")+ 
    geom_text(aes(label=Number)) + 
    facet_grid(.~Place, scales="free_x") 

enter image description here

+0

x軸を並べ替える方法はありますか?馬、犬、猫、馬 – vanathaiyan

+0

軸を並び替えるとき:因子の変数は、あなたが望む順序を指定するだけで並べ替えることができます。つまり、df $ Animals = factor(df $ Animals、levels = c( "Giraffe"、 "Dog"、 "Cat"、 "Horse"))です。 – eipi10

関連する問題