繁体   English   中英

如何将连续色带应用于 ggplot2 中的直线?

[英]How to apply a continous color ramp to a straight line in ggplot2?

我想对 ggplot2 中的垂直线应用连续色带。我的 plot 在下面。 我已将连续色带应用到geom_line()元素,而水平线代表色带覆盖范围的限制并适当着色。 我希望左侧的垂直线显示两条水平线之间的整个色带范围。

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

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

在此处输入图像描述

问题是当使用geom_segment时,只有一个段。 但是,除了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()

正如@stefan 已经在评论中建议的那样,我们可以使用来自geom_link2 ggforce的 geom_link2,这是一个示例:

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")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM