2

scale_gradientn(最後から2番目のグラフィック)のggplot2の例:

dsub <- subset(diamonds, x > 5 & x < 6 & y > 5 & y < 6) 
dsub$diff <- with(dsub, sqrt(abs(x-y))* sign(x-y)) 
(d <- qplot(x, y, data=dsub, colour=diff))

max_val <- max(abs(dsub$diff)) 
values <- seq(-max_val, max_val, length = 11) 
d + scale_colour_gradientn(colours = topo.colors(10), values = values, rescale = FALSE)

「形状」記号を使用する場合、データ値に従って入力するにはどうすればよいですか。

(d <- qplot(x, y, data=dsub, fill=diff, colour="black", shape=21)) # Does not work

しかし、データベースの境界線の色ではなく、黒い境界線とデータベースの塗りつぶしを使用しますか?

編集:

提案されたソリューションは完全には機能していません。必要なのは、上記の例でshape = 21を使用して、同じ塗りつぶしの色を取得できるようにすることですが、境界線は黒です。つまり、次のようになります。

dsub <- subset(diamonds, x > 5 & x < 6 & y > 5 & y < 6) 
dsub$diff <- with(dsub, sqrt(abs(x-y))* sign(x-y))
max_val <- max(abs(dsub$diff))
values <- seq(-max_val, max_val, length = 11)

ggplot(dsub) +
    geom_point(aes(x=x,y=y, data=dsub, colour=diff), size=3) +
    scale_colour_gradientn(colours = topo.colors(10), values = values, rescale = FALSE)

ただし、shape = 21を使用して、黒い境界線があり、塗りつぶしが同じになるようにします。これにより、塗りつぶしではなく、アウトラインが色付けされます。

ggplot(dsub) +
    geom_point(aes(x=x,y=y, data=dsub, colour=diff), size=3, shape=21) +
    scale_colour_gradientn(colours = topo.colors(10), values = values, rescale = FALSE)

そしてこれは正しく埋められません:

ggplot(dsub) +
geom_point(aes(x=x,y=y, data=dsub, fill=diff), size=3, shape=21) +
scale_colour_gradientn(colours = topo.colors(10), values = values, rescale = FALSE)
4

2 に答える 2

1

ggplotを使用すると、次のようになります。

d<-ggplot(dsub,aes(x=x,y=y,group=diff,fill=diff))
d+geom_point(colour="black",size=3,shape=21)

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

編集

d<-ggplot(dsub,aes(x=x,y=y,group=diff,fill=diff))
e<- d + geom_point(colour="black",size=3,shape=21)
e + scale_fill_gradientn(colours=topo.colors(10))

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

geom_tileまた、コメントで述べたように、どこかに別のレイヤーがあるふりをします。これはgeom_line、明確にするために個別のコンポーネントに分割した追加のレイヤーの例です。

d<-ggplot(dsub,aes(x=x,y=y,group=diff,fill=diff))
e<-d+geom_line()
g<- e + geom_point(colour="black",size=3,shape=21)
g + scale_fill_gradientn(colours=topo.colors(10))
于 2012-09-10T19:59:49.747 に答える
0

user1317221_G が示すコードのように、解決策はscale_fill_gradientnではなくを使用することscale_color_gradientnです。

ggplot(dsub) +
    geom_point(aes(x=x,y=y,fill=diff), colour="black", size=3, shape=21) +
    scale_fill_gradientn(colours = topo.colors(10), values=values, rescale=FALSE)
于 2012-09-11T19:39:08.357 に答える