在R中使用ggplot2改变坡度

在R中使用ggplot2改变坡度,r,ggplot2,R,Ggplot2,我正在尝试创建一个绘图,其中颜色渐变沿x轴和y轴变化。更具体地说,我正在尝试设置渐变,以便色调范围沿x轴变化,值沿y轴变化 例如,我使用的是一条正弦曲线,沿着-pi到pi有一些噪声 set.seed(5678) x <- seq(-1*pi, 1*pi, 0.01) y <- sin(x) + rnorm(length(y)) df <- cbind.data.frame(x, y) ggplot(df, aes(x=x, y=y)) + geom_line() set.se

我正在尝试创建一个绘图,其中颜色渐变沿x轴和y轴变化。更具体地说,我正在尝试设置渐变,以便色调范围沿x轴变化,值沿y轴变化

例如,我使用的是一条正弦曲线,沿着
-pi
pi
有一些噪声

set.seed(5678)
x <- seq(-1*pi, 1*pi, 0.01)
y <- sin(x) + rnorm(length(y))
df <- cbind.data.frame(x, y)
ggplot(df, aes(x=x, y=y)) + geom_line()
set.seed(5678)

x这里有一个选项,可以使用从x和y计算的色调来执行此操作:

df$hue <- pmax(pmin((df$x + pi)/pi/3 + (2 - df$y) / 12, 1), 0)
ggplot(df, aes(x=x, y=y, group = 1, colour = hsv(hue, 1, 1))) + geom_path() +
  scale_colour_identity()


在这两种情况下,色调都取决于
x
y
,且值保持不变。这符合你提出的例子,如果不是你最初的描述。很明显,它可以被裁剪成不同的色调和颜色。还值得注意的是,需要有一个
集合。否则,
ggplot2
尝试将相同颜色的所有点连接在一起

不完全是你想要的,但是你可以尝试将
颜色
映射到x和y的交互
df$xy,类似于
colorrmppalete
cols@nongkrong,但颜色仅沿x轴变化,而OP希望它沿x轴和x轴变化axes@scoa哦,好吧,那么互动不起作用吗?@nongkrong这并不是他们想要的:有了互动,数据点x=1 y=2的颜色与x=2 y=1的颜色相同。
adf <- as.data.frame(approx(df, xout = seq(-pi, max(df$x), 0.001)))
adf$hue <- pmax(pmin((adf$x + pi)/pi/3 + (2 - adf$y) / 12, 1), 0)
ggplot(adf, aes(x=x, y=y, group = 1, colour = hsv(hue, 1, 1))) + geom_path() +
  scale_colour_identity()