2016-11-08 7 views
0

列に含まれる数値データに関連する点を色付けする必要がある単純なデータフレームがあるとします。だから、私が持っている場合:ggplot:列に関連する「適切な」色を選択する方法

dataframe 
# X1   X2  pop 
# 1 -0.11092652 -1.955598e-09 448053 
# 2 -0.09999865 -2.310067e-10 418231 
# 3 -0.05944755 -3.475013e-09 448473 
# 4 0.51378848 1.631781e-09 119548 
# 5 0.09438223 -9.606475e-10 323288 
# 6 0.19349045 6.074025e-10 203153 
# 7 0.06685609 3.210156e-10 208339 
# 8 -0.10915456 -1.407190e-09 429178 
# 9 -0.10348100 -1.401948e-09 1218038 
# 10 -0.08607617 -7.356602e-10 383018 
# 11 1.00343465 -2.423237e-08 209550 
# 12 -0.05839148 1.503955e-09 287042 
# 13 -0.09960163 2.167945e-10 973129 
# 14 -0.05793417 2.510107e-09 187249 
# 15 0.02191610 2.479708e-09 915225 
# 16 0.48877872 1.338346e-08 462999 
# 17 -0.10289556 1.472368e-09 1108776 
# 18 -0.10316414 2.933469e-10 402422 
# 19 -0.09545279 -2.926035e-10 274035 
# 20 -0.06111044 3.464014e-09 230749 

と、私は次のようにggplotを使用:可能なプレゼンテーションはです enter image description here

ggplot(dataframe) + 
    ggtitle("Somehow useful spatialization")+ # Electricity/Gas 
    geom_point(aes(dataframe$X1, dataframe$X2), color = dataframe$pop, size=2) + 
    theme_classic(base_size = 16) + 
    guides(colour = guide_legend(override.aes = list(size=4)))+ 
    xlab("X")+ylab("Y") 

私のようなものを得ます。 しかし、私は、列がpopを表すように色付けされた点、すなわち(例えば)明るいオレンジ、暗い赤、そして黒の色を持つようにしたいとします。どのようにしてそのようなグラフィックスを得るために列popを "スケール"できますか?

EDIT:あなたのinital ggplot呼び出しであなたの美学(AES)を追加することができますggplotで

> dput(dataframe) 
structure(list(X1 = c(-0.110926520419347, -0.0999986452719714, 
-0.0594475526112884, 0.513788479303472, 0.0943822277852107, 0.193490454204271, 
0.0668560854540437, -0.109154563987586, -0.103480996064617, -0.0860761723229372, 
1.00343465471568, -0.0583914756527933, -0.0996016272609995, -0.0579341671474729, 
0.0219161022704227, 0.488778719096658, -0.102895564162661, -0.103164140322136, 
-0.0954527927249849, -0.0611104428640883), X2 = c(-1.9555978205951e-09, 
-2.31006712207053e-10, -3.47501251356368e-09, 1.63178106438806e-09, 
-9.60647459243156e-10, 6.07402512804044e-10, 3.21015629676789e-10, 
-1.40718981687972e-09, -1.40194842954735e-09, -7.35660154466167e-10, 
-2.423237202138e-08, 1.50395541775022e-09, 2.16794489937917e-10, 
2.51010717100061e-09, 2.47970820013341e-09, 1.33834570208731e-08, 
1.47236816671351e-09, 2.93346922578509e-10, -2.92603459149485e-10, 
3.46401369936372e-09), pop = c(448053L, 418231L, 448473L, 119548L, 
323288L, 203153L, 208339L, 429178L, 1218038L, 383018L, 209550L, 
287042L, 973129L, 187249L, 915225L, 462999L, 1108776L, 402422L, 
274035L, 230749L)), .Names = c("X1", "X2", "pop"), row.names = c(NA, 
20L), class = "data.frame") 
+1

あなたのデータフレームの 'dputを()'を追加することができた場合私たちはデータを自分で使うことができます。 ( 'dput(dataframe)'を実行し、あなたの質問に出力を入れてください)一見、色を追加する場所と関係しているかもしれません。あなたのgeom_pointの代わりに 'geom_point(aes(x = X1、y = X2、color = pop)、size = 2)+'を使うとどうなりますか? –

答えて

2

。あなたはすでにデータがどこにあるのかを(dataframe)ggplotに伝えているので、変数名を直接(dataframe$なし)参照することができます。色がスケールであるためには、それは美的なものとして呼び出される必要があります(aes()コールの中で、静的な値ではありません)。それが審美的に追加されると、scaleを追加することで反応の仕方をカスタマイズできます。これをすべて考慮すると、次のコードが表示されます。

ggplot(dataframe, aes(x = X1, y = X2, color = pop)) + 
    ggtitle("Somehow useful spatialization")+ # Electricity/Gas 
    geom_point(size=2) + 
    theme_classic(base_size = 16) + 
    guides(colour = guide_legend(override.aes = list(size=4))) + 
    xlab("X")+ylab("Y") + 
    scale_color_gradient2(low = "green", mid = "red", high = "black", midpoint = mean(dataframe$pop)) 

このコードは次のグラフを示します。色はさらにscale_color_gradient2の部分で遊んで調整することができます。 (lowを与えるので実際にlow色としてオレンジ色を選択するよりも良いオレンジが私を超えているのはなぜ緑、私は単なる偶然であってしまった)

The resulting graph

+0

ありがとうMarijn!凡例「ポップ」を修正する方法も尋ねることができますか? –

+0

凡例に固定したい特定の問題がある場合は、別の質問をすることをおすすめします。ちょうど一般的な調整をしていれば、ggplot2のドキュメントをhttp://docs.ggplot2.org/current/でチェックすることができます。または、凡例については、http://docs.ggplot2.org/current/guides.htmlまたはhttp ://docs.ggplot2.org/current/guide_legend.html –

+0

私は、(この場合) "theNameIwant < - pop"を修正して以前と同じように解決しました。 –

関連する問題