我有一些使用色标绘制的图像数据。我想从图像中挑选出一条线并在 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)
我想给线条上色,类似于下图
使用以下代码创建
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))