首页 > 解决方案 > 让色阶渐变与转换为 ggplotly 的 ggplot 一起使用

问题描述

我无法使用 ggplot 对象正确地绘制颜色美学线。我错过了什么?

library(ggplot2)
library(plotly)



df <- data.frame(val = as.numeric(LakeHuron), idx = 1:length(LakeHuron))


p <- ggplot(df, aes(x = idx, y = val, colour = val)) + geom_line()
p <- p + scale_color_gradient2(low="red", mid = "gold", high="green", midpoint = mean(df$val))

p


p2 <- ggplotly(p)
p2

p打印正确的预期输出。

当我打印 plotly 对象p2时,我没有正确连接线点?

问题是当我添加我认为的颜色美学时。

版本:情节 4.9,ggplot2 3.1.1

标签: rggplot2ggplotly

解决方案


这是由于 plotly 与 ggplot 的工作方式存在限制/差异。看起来这里有一个未解决的问题,更新于 2018 年 8 月,这表明在 ggplot 使用的相同结构中是不可能的——情节中的单个系列目前不能有不同的颜色。(“我们不允许线迹上的每段着色”)

但不要害怕!geom_segment我们可以使用将线的每个部分指定为单独的段来构建图的方式略有不同。这个结构是每个段的一个单独的对象,并且将转换为 plotly fine:

df <- data.frame(val = as.numeric(LakeHuron), idx = 1:length(LakeHuron))
p_seg <- ggplot(df, aes(x = idx, y = val, 
                    xend = lead(idx), yend = lead(val), 
                    colour = val)) + 
  geom_segment()
p_seg <- p_seg + scale_color_gradient2(low="red", mid = "gold", high="green", midpoint = mean(df$val))
p_seg

p2 <- ggplotly(p_seg)

在此处输入图像描述


推荐阅读