首页 文章

修改R ggplot2图例中的线条颜色?

提问于
浏览
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在图例中将线条绘制成灰色/黑色?

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")
    

    enter image description here

    请注意,这只适用于ggplot2 0.9 .

相关问题