【问题标题】:ggplot gradient color for geom_linegeom_line 的 ggplot 渐变颜色
【发布时间】:2021-06-20 00:59:26
【问题描述】:

获取以下数据和图表

df <- data.frame(ID = c(1, 1, 2, 2, 3, 3),
                 cond = c(2, 2, 2, 2, 2, 2),
                 Time = c(1,2,1,2,1,2),
                 State  = c("Empty", "Empty", "Empty", "Full", "Full", "Empty"),
                 eye = c(2, -3, -2, 1, 0, -2),
                 combination = c(1, 1,2, 2, 3, 3))
ggplot(df, aes(x = Time, y = eye)) +
  geom_point(aes(shape=State), size = 3.5) +
  scale_shape_manual(values=c(13,15)) +  
  geom_line(aes(group=ID, color = Time), size = 5) +
    
  theme(legend.title=element_blank(),
        axis.title.x=element_text(size = 12),
        axis.title.y=element_text(size = 12),
        plot.title = element_text(hjust = 0.5, size = 15),
        axis.text.x= element_text(color = "black"),
        axis.text.y= element_text(color = "black"),
        axis.line = element_line(colour = "black"),
        plot.background = element_rect(fill = "white"),
        panel.background = element_rect(fill = "white"))

如何让线条变成渐变色?图例显示了渐变颜色方案,但如图所示,线条似乎没有准确地跟随它。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我不相信你可以在 ggplot2 中的一个 geom 实例中改变美学等美学,而无需额外的插值步骤。 ggforce::geom_link2 是一个很好的替代品:

    ggplot(df, aes(x = Time, y = eye)) +
      ggforce::geom_link2(aes(group=ID, color = Time), size = 5, n = 500, lineend = "round") +
      geom_point(aes(shape=State), size = 3.5) +
      scale_shape_manual(values=c(13,15)) + ....
    

    【讨论】:

    • 完美解决了问题,谢谢!您是否还知道是否可以为不同的线条获得不同的颜色?例如,一条线是蓝黄色,另一条是黄红色,第三条是绿紫色?
    • 我不知道有什么简单的方法可以做到这一点,但可以使用color = Time + ID)scale_color_distiller(palette = "Set1") 之类的行来快速破解。这将为您提供每条线的不同颜色范围。或者,您可以将颜色分配给 ID,将 alpha 分配给时间,以获得每种颜色的分级版本。
    • 将颜色分配给 ID 并将 alpha 分配给 Time 是一个很好的解决方案,但我在刻度的工作方式上遇到了问题 - 与上面的工作示例不同,颜色刻度在线条上均匀增长,当我设置 Alpha = Time alpha 不会以一种简洁的渐变方式改变它,它几乎立即在行的开头/结尾处变为 alpha 1。你知道解决这个问题的方法吗?
    • 看起来 alpha 很难用 ggforce::geom_link2 控制,因为它依赖于重叠的段,而且我也在努力改变 alpha 过渡曲线,尽管尝试了这里的建议:sape.inf.usi.ch/quick-reference/ggplot2/alpha
    猜你喜欢
    • 2021-11-09
    • 2022-08-10
    • 2020-11-27
    • 2019-08-22
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多