0

私は等高線のサイズと色の両方を使用して関連情報を描写している等高線図に取り組んでいます。stat_contour のドキュメントに基づく同等の最小限の例を次に示します。

require(ggplot2)

volcano3d <- melt(volcano) 
names(volcano3d) <- c("x", "y", "z") 
v <- ggplot(volcano3d, aes(x, y, z = z)) 
TransBinary = Trans$new("TransBinary",f=function(x){ifelse(x>124,1,0)})
# under 2.15: TransBinary = trans_new("TransBinary",transform=function(x){ifelse(x>0,1,0)},inverse=FALSE)

v + 
  stat_contour(aes(colour=..level..,size=..level..)) + 
  scale_colour_gradient(high="black",low="grey",trans=TransBinary,legend=FALSE) + 
  scale_size("size")

これはまさに私が探しているものを生成します: z の値が高いほど大きな線として表示され、z のある値 (ここでは中央値) にしきい値があり、それを下回ると線が灰色になり、それを上回ると、等高線図が生成されます。それらは黒く着色されています。

唯一のしわは、結果の凡例に線のサイズが表示されることですが、凡例のすべての線は (当然のことながら) 黒です。

凡例でも線をグレー/黒としてプロットするようにggplotを取得する方法はありますか?

4

1 に答える 1

2

任意のパレットを使用できるため、必要なものは次のとおりです。

th <- rescale(c(124, volcano3d$z))[1]
sc <- continuous_scale("colour", "", palette = function(x) {ifelse(x > th, "black", "grey")})

v + 
 stat_contour(aes(colour=..level..,size=..level..)) + 
 sc+
 scale_size("size") + labs(colour = "size")

ここに画像の説明を入力

これはおそらくggplot2 0.9でのみ機能することに注意してください。

于 2012-04-23T08:28:44.080 に答える