2016-11-19 46 views
0

ggplot2で地図上にフランスの鉛筆に名前を付けるさまざまな方法をプロットしようとしています。フランスの96の学科のそれぞれについて、私は1つのアイテムとこのアイテムに関連付けられたスコアを持っています。私は、部門上のアイテムを地図上にプロットするのに問題はありませんが、関連するスコアに応じて各ポリゴンの色を変える方法を見つけることはできません。私のデータはhereです。マップを生成するためのコードは、以下である:ggplot2でマップ上にポリゴンの色を塗りつぶし

library(ggplot2) 
library(scales) 
library(Cairo) 

#open data 
plotDatafr = read.table("plotDatafr.txt", header=T, sep="\t", quote="", dec=".") 
g <- ggplot() + 
geom_polygon(data = plotDatafr, aes(x=long, y = lat, group = group, fill=item), alpha=0.8, colour = "black") + 
scale_fill_manual(values = c("#009E73", "#F0E442", "#0072B2", "#D55E00"), na.value=NA) + 
theme_nothing(legend = TRUE) + 
coord_map() #avoid distorsion 
ggsave(g, filename = "crayon_euro.png", scale=1) #save for futher use 

Iが「scale_fill_distiller」コマンドを使用しようとしたが、そのようなコマンドを使用して私は、単一のアイテムの特性をプロットすることができ、私は彼らの与えられた色を失う、例えば:

g <- ggplot() + 
geom_polygon(data = plotDatafr, aes(x = long, y = lat, group = group, fill = score), colour = "black", alpha = 0.8) + 
scale_fill_distiller(palette = "Purples", breaks = pretty_breaks(n = 9), labels = percent, direction = 1, "", guide=FALSE) + 
guides(fill = guide_legend(reverse = TRUE, override.aes = list(alpha = 1))) + 
theme_nothing(legend = TRUE) + 
coord_map() #avoid distorsion 
ggsave(g, filename = "crayon_euro.png", scale=1) #save for futher use 

私の多角形の色合いを数値で変える方法はありますか?私はscale_fill_distillerとscale_fill_manualを同時に組み合わせる方法を考え出すことはできません。

+0

あなたがあなたの問題のために、最小限の再現性の例を作ることができますか?複数のファイルをダウンロードして複数のパッケージをインストールするように尋ねると 'geom_polygon(aes(fill =)) 'の問題が残っているようですが、' dput(plotDatafr) 'の結果を追加することがあります – Nate

+0

' alpha = score'を追加することは、スコアの異なる値。 – Haboryme

+0

ありがとう@NathanDay - 私は質問を編集し、データセットを提供し、コードを短縮しました。 –

答えて

0

あなたはplotDatafr$scoreaes(fill)を調整する代わりにscale_fill_gradientを使用することができます:あなたはそれを使用する前に、何らかの方法でビンplotDatafr$scoreしなければならないので、

#open plotting data 
plotDatafr = read.table("plotDatafr.txt", header=T, sep="\t", quote="", dec=".") 

# make mapping data object 
fr <- map_data("france") 

# plot 
ggplot(fr, aes(x=long, y = lat, group = group)) + 
    geom_polygon(data = plotDatafr, aes(fill=score), alpha=0.8, colour = "black") + 
    scale_fill_gradient(low = "yellow", high = "blue", na.value=NA) + 
    coord_map() 

enter image description here

scale_fill_distillerは、離散的なデータのために設計されています。

+0

ありがとう@nathan。これは私が達成しようとしているものではありません:色の濃淡をスコアに応じて変えたいのですが、私は "scale_fill_manual"で導入した色の異なるカテゴリを保持したいと思います。 –

+1

@Haboryme abiveによって与えられた答えは完全に機能します!そのトリックは、「geom_polygon」の 'aes()'にアルファベットを直接設定することです: 'ggplot()+ geom_polygon(data = plotDatafr、aes(x = long、y = lat、group = group = 0、0、0、0、0、0、0、0、0、0、0、0、0、0、0) ""、na。値= NA)+ coord_map() ' ありがとうございました! –

0

上記の@Haborymeによる回答は完全に機能します。トリックはgeom_polygonaes()に直接「スコア」でアルファを設定することで、それは言うことです:

ggplot() + geom_polygon(data = plotDatafr, aes(x = long, y = lat, group = group, fill = item, alpha = score), colour = NA) + scale_fill_manual(values = c("#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7"), name = "", na.value=NA) + coord_map()

関連する問題