1

我想对 ggplot2 中的垂直线应用连续的颜色渐变。我的情节如下。我已将连续色带应用于geom_line()元素,而水平线表示色带覆盖的范围的限制,并进行了适当的着色。我希望左侧的垂直线显示两条水平线之间的色带的全部范围。

我试过geom_segment(aes(color=dwsTempOutC))(dwsTempOutC 是我的 y 轴变量),但正如您在图像中看到的那样,它只对线条应用了一种颜色。

我想我可以通过生成一系列短线段并从渐变应用离散颜色到每个线段来实现连续的颜色渐变,但我希望有一种不那么老套的方法来做到这一点。

在此处输入图像描述

4

2 回答 2

3

问题是,当使用geom_segmentthen 时,只有一个段。但是,除此之外,ggforce::geom_link您还可以使用以下方法获得相同的结果geom_line

使用一些虚假数据:

df <- data.frame(
  x = seq(0, 2 * pi, length.out = 100),
  y = sin(seq(0, 2 * pi, length.out = 100))
)

library(ggplot2)

ggplot(df, aes(x, y, color = y)) +
  geom_line() +
  geom_line(data = data.frame(x = -.5, y = seq(-1, 1, length.out = 100))) +
  scale_color_viridis_c()

于 2022-02-22T19:45:31.433 回答
2

正如@stefan 在我们可以geom_link2ggforce包中使用的评论中所建议的那样,这里有一个例子:

library(tidyverse)
library(ggforce)

ggplot(mtcars, aes(x=cyl, y=mpg)) +
  geom_point()+
  geom_link2(aes(x = 5, y = mpg, colour = mpg), size=2)+
  scale_color_gradient2(midpoint=mid, low="green", mid="white",
                          high="red")

在此处输入图像描述

于 2022-02-22T19:34:04.090 回答