r - 让色阶渐变与转换为 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
解决方案
这是由于 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)
推荐阅读
- javascript - 使用 javascript 为 Highcharts 图操作数据
- google-cloud-firestore - Firestore 安全规则 - 唯一用户名
- laravel - Laravel Eloquent 一-> 多关系分配父
- react-native - 如何防止 React Navigation 中的 Drawer Navigator 刷新?
- laravel - 如何为 oneToMany 关系实现类似结构的附加/分离?
- php - Ext JS 阻止 Excel 文件下载
- angular - Angular 4 中 [ngClass]="computeClass()" 和 class="{{computeClass()}}" 之间的区别
- python - 从句子中提取/解析代词-代词和动词-名词/代词组合
- haskell - 寻找包含最后一个元素的诸如 break 之类的函数
- caching - CakePHP 3.x ORM 如何在不明确定义的情况下知道要读取哪个缓存文件?