【问题标题】:ggplot2 : Add a gradient colored square according to valuesggplot2 : 根据值添加渐变色方块
【发布时间】:2012-01-05 12:53:58
【问题描述】:

关于我要做什么,我有一个棘手的问题。 我有一个带有两条线(两个条件的平均值)的图。我想在同一个图上添加一个反映 t 值的正方形(并根据这些值以渐变方式着色)。我怎样才能添加这个正方形?

好吧,既然我不知道我是否清楚,这里是我试图实现的一个数字。

感谢您的帮助!

【问题讨论】:

  • 能否请您发布一些可重现的示例?

标签: r ggplot2 gradient


【解决方案1】:

试试这个 ggplot2 方式:

x <- seq(-10, 10, 0.1)
df <- data.frame(x, y1 = pnorm(x), y2 = pnorm(x) * 2)
df$t <- df$y2 - df$y1
dfm <- melt(df, id = "x")

ggplot(NULL, aes(x, value)) + 
  geom_line(aes(colour = variable), 
            droplevels(subset(dfm, variable %in% c("y1", "y2")))) +
  geom_rect(aes(xmin = x - 0.05, xmax = x + 0.05, ymin = -0.5, ymax = -0.4, fill = value),
            subset(dfm, variable == "t"))

更新

您可以使用scale_fill_XXX。这是喷射色版本:

jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))

# panel on the left side
p <- ggplot(NULL, aes(x, value)) + 
  geom_line(aes(colour = variable), 
            droplevels(subset(dfm, variable %in% c("y1", "y2")))) +
  geom_rect(aes(xmin = x - 0.05, xmax = x + 0.05, ymin = -0.5, ymax = -0.4, fill = value),
            subset(dfm, variable == "t")) + 
  scale_fill_gradientn(colours = jet.colors(7))
p

在下一个版本的ggplot2中,你可以使用colorbar作为图例。

  # panel on the right side
  p + guides(fill = "colourbar")   

【讨论】:

  • 非常感谢您,它工作得非常好!另一个问题:你知道我如何操纵渐变的颜色吗?非常感谢!
  • 我建议geom_raster 而不是geom_rect
  • @baptiste 将来是的,但目前geom_raster 由于某些原因可能无法用于此目的。我会发到github上。
【解决方案2】:

对于基本图形,您可以使用rasterImage 函数将带有渐变的矩形添加到图形中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多