21

ggplotでマップのカラースケールを設定するのが難しい。グレースケールが必要です。私が間違っているところのアイデアにとても感謝しています。また、色変数をggplotに取り込むより効率的な方法があるかどうかも疑問に思います(つまり、「強化された」データに添付するよりも)?

library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region)) # using rows as a dummy variable
states$variable <- var$Freq[match(states$region,var$Var1)]

map <- ggplot(states, aes(x=long, y=lat)) + 
  geom_polygon(aes(group=group, fill=variable), col=NA,lwd=0)

map + scale_colour_gradient(low='white', high='grey20')
map + scale_colour_grey()

ここに画像の説明を入力してください

4

2 に答える 2

14

scale_fill_*ではなく andを使用する必要がありますscale_color_*。ポリゴン ジオメトリの場合、ポリゴンの塗りつぶしの色は、fill美学ではなく、美学に結び付けられcolorます。一般に、特定のスケールの詳細を変更するために使用される関数は、scale_beauty_name _type_of_scalescale_fill_gradientです。

于 2012-09-01T17:46:58.290 に答える
4

このコードは私にとってはうまくいきます。

library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region))
states$variable <- var$Freq[match(states$region,var$Var1)]
map <- ggplot(states, aes(x=long, y=lat,fill=variable,group=group)) + geom_polygon()
map + scale_fill_gradient(low='white', high='grey20')

離散変数の問題を処理する簡単な方法は、カラー パレット関数を使用して「偽の」連続パレットを作成することです。以下の例を参照してください。

カラー パレットを定義します。ここでは黒と白の 16 進コードを使用しましたが、任意の色を使用できます

gs.pal <- colorRampPalette(c("#FFFFFF","#000000"),bias=.1,space="rgb")

いくつかの偽のデータを作成します

x <- rnorm(100)
dat <- data.frame(cbind(x))
dat$fac <- as.factor(sort(rep(1:5,20)))
dat$y <- x * as.numeric(dat$fac)

次に、この場合は ggplot 関数scale_*タイプでプロットします。これは、使用する色が上にあるためです。_manualscale_colour_manualscale_fill_manual

ggplot(dat,aes(x=x,y=y,colour=fac))+geom_point()+scale_colour_manual(values=gs.pal(5))
于 2012-09-01T18:16:26.077 に答える