r语言 - 使用 plotly 时如何在 ggplot 小提琴图表中保留分位数线



我正在尝试使用 rplotly包为我的 ggplot 小提琴图表添加一些交互性。不幸的是,每当我用ggplotly包裹绘图时,我的图表的一部分就会消失。具体来说,在创建小提琴图表时,我使用draw_quantiles参数在图表中绘制水平线。这些行在 ggplot 中正确显示,但它们不存在于绘图输出中。

下面是一个可重现的示例。第一个图表是包含所需水平线的 ggplot。一旦 ggplot 被包裹在 ggplotly 函数中,水平线就会消失:

# load the libraries
library(data.table)
library(ggplot2)
library(plotly)
# create example data
DT <- data.table(x= rep(c('a', 'b', 'c'), 1000),
y = rpois(3000, lambda = c(2, 3, 5)))
# create violin chart using ggplot
p <- ggplot(DT, aes(x =x, 
y = y, 
fill = x)) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) 
# wrap ggplot in plotly
ggplotly(p)

Plotly 似乎没有等效的几何对象:https://plot.ly/r/violin/

另一种方法是叠加箱线图几何。

ggplot(DT, aes(x =x, y = y, fill = x)) +
geom_violin(alpha=0.7) +
geom_boxplot(width=0.2, fill="white")

但是plotly忽略了boxplot宽度,所以它不像原生ggplot2那样漂亮。

因此,您必须使用本机绘图语法将箱线图更好地嵌入到小提琴中。请参阅我提供的链接。

编辑:

如果你想让你的生活更复杂,你可以手动计算水平线段的位置,手动绘制四分位数,并用分组线或哑铃或类似的东西将它们分别叠加到香草小提琴上。绘图应该能够显示线或点几何。但我认为对于一个不那么优雅的结果来说,这比它的价值更麻烦。

最新更新