获取色彩比例渐变以将ggplot转换为ggplotly

时间:2019-06-26 02:05:20

标签: r ggplot2 ggplotly

我无法使用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打印正确的预期输出。

当打印打印对象p2时,线点不能正确连接吗?

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

版本: 4.9,ggplot2 3.1.1

1 个答案:

答案 0 :(得分:1)

这是由于plot / ggplot的工作方式受到限制/差异。似乎有open issue here更新于2018年8月,这表明在ggplot使用的相同结构中是不可能的-绘图中的单个系列当前不能具有变化的颜色。 (“行迹上的We don't allow per-segment coloring”)

但是不要害怕!我们可以使用geom_segment将图的每一部分指定为一个单独的线段,以稍微不同的方式构建图。此结构是每个段的单独对象,并将转换为精巧的

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)

enter image description here