我正在尝试使用 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那样漂亮。
因此,您必须使用本机绘图语法将箱线图更好地嵌入到小提琴中。请参阅我提供的链接。
编辑:
如果你想让你的生活更复杂,你可以手动计算水平线段的位置,手动绘制四分位数,并用分组线或哑铃或类似的东西将它们分别叠加到香草小提琴上。绘图应该能够显示线或点几何。但我认为对于一个不那么优雅的结果来说,这比它的价值更麻烦。