【发布时间】:2021-05-31 14:45:56
【问题描述】:
我正在创建一个函数,通过 ggplotly 函数为任何给定的数据集创建一个 plotly raincloud plot。其中大部分都非常简单,但箱线图覆盖不起作用。
我目前最好的尝试是这样的:
raincloud <- ggplot2::ggplot(data = iris) +
ggplot2::geom_density(mapping = ggplot2::aes(x = Sepal.Length,
fill = Species,
colour = NA),
alpha = .85) +
ggplot2::geom_rug(mapping = ggplot2::aes(x = Sepal.Length,
colour = Species),
size = 1,
alpha = .6) +
ggplot2::geom_boxplot(mapping = ggplot2::aes(x = Sepal.Length,
y = -.1,
fill = Species,
colour = Species),
width = 0.2,
alpha = .3) +
ggplot2::facet_grid(rows = 'Species') +
ggplot2::theme_minimal()
raincloud
plotly::ggplotly(raincloud)
这种方法有两个主要问题:
- 箱线图被人为地放置在绘图区域内,而不是边缘。而且因为我将它设置为固定的
y和固定的width,它可以与密度重叠或看起来很小,具体取决于分布的高度。这就是为什么我得出结论,我需要将它放在地块边缘,在 geom_rug 上方。
- 生成 ggplotly 时,箱线图就消失了,只留下一条虚线,就好像它是另一个 geom_rug。我知道 plotly 支持箱线图,但也许水平 + 刻面的组合对于它的翻译来说太过分了。
我坚持强调需要它与情节兼容,因此来自ggdist、ggExtra 等的自定义几何图形不是一个选项,因为 ggplotly 的翻译器不支持它们。
【问题讨论】:
标签: r ggplot2 r-plotly ggplotly