【问题标题】:Modifying colour of lines in R ggplot2 legend?修改 R ggplot2 图例中线条的颜色?
【发布时间】:2012-04-23 06:02:15
【问题描述】:

我正在绘制等高线图,我使用等高线的大小和颜色来描绘相关信息。这是一个基于 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 在图例中也将线条绘制为灰色/黑色?

【问题讨论】:

标签: r ggplot2


【解决方案1】:

你可以使用仲裁调色板,所以你需要的是:

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。

【讨论】:

  • c(124, volcano3d$z) 是干什么用的?
  • @qed 阈值,124,需要在归一化空间(即[0, 1])中表示。
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 2015-08-02
  • 2021-04-15
  • 2021-07-10
  • 1970-01-01
相关资源
最近更新 更多