我无法使用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
答案 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)