ggplot2中曲线的色标

时间:2013-06-03 09:23:34

标签: r ggplot2

我有一些使用色标绘制的图像数据。我想从图像中选出一条线并在ggplot2中绘制曲线,在曲线上使用相同的色标,就像在图像中一样。这可能吗?

假设我按如下方式绘制图像

require(ggplot2)
n <- 100 # number of observations
cols <- topo.colors(256) # color scheme
lim <- c(-10, 10) # limits corresponding to color scheme

x <- seq(0, 1, length = n) # x-axis
y <- cumsum(rnorm(n)) # Brownian motion

dat <- data.frame(x, y) # data

# Plot
ggplot(dat, aes(x, y)) + geom_line() + scale_y_continuous(limits = lim)

Resulting plot

我想对线条进行着色,类似于以下情节

Color scale plot

使用以下代码

创建
colscale <- function(y, cols, ylim) {
    k <- length(cols)
    steps <- seq(ylim[1], ylim[2], length = k)

    result <- sapply(y, function(x) {cols[which.min(abs(x - steps))]})
    return(result)
}

plot(x, y, ylim = lim, col = colscale(y, cols, lim))

1 个答案:

答案 0 :(得分:6)

这非常简单。你只需要两件事:

  1. 指定颜色随之变化的变量,在本例中为y
  2. 添加调色板。
  3. 所以:

    ggplot(dat, aes(x, y)) + 
      scale_y_continuous(limits = lim) +
      geom_line(aes(colour=y)) + 
      scale_colour_gradientn(colours = topo.colors(256))
    

    enter image description here