dan*_*dan 5 r plotly violin-plot
我有几个组的测量值,我想将它们绘制为小提琴图:
set.seed(1)
df <- data.frame(val = c(runif(100,1,5),runif(100,1,5),rep(0,100)),
group = c(rep("A",100),rep("B",100),rep("C",100)))
Run Code Online (Sandbox Code Playgroud)
使用R的ggplot2:
library(ggplot2)
ggplot(data = df, aes(x = group, y = val, color = group)) + geom_violin()
Run Code Online (Sandbox Code Playgroud)
R但是当我尝试使用's获得等效值时plotly:
library(plotly)
plot_ly(x = df$group, y = df$val, split = df$group, type = 'violin', box = list(visible = F), points = F, showlegend = T, color = df$group)
Run Code Online (Sandbox Code Playgroud)
“C”组获得一把充气/人造小提琴。
知道如何处理这个问题而不是使用 吗ggplotly?
我没有找到解决情节行为的方法(可能值得为此制作错误报告)。解决方法是过滤数据,仅在范围大于零的组上绘制小提琴图。如果您还需要显示其他组的位置,则可以使用箱线图。
为了演示,我将其用于library(data.table)过滤阶段。如果您愿意,可以使用 dplyr 或相同过程的基本版本:
setDT(df)[, toplot := diff(range(val)) > 0, group]
Run Code Online (Sandbox Code Playgroud)
现在我们可以根据组是否应该有小提琴使用不同的跟踪样式来绘制组
plot_ly() %>%
add_trace(data = df[(toplot)], x = ~group, y = ~val, split = ~group,
type = 'violin', box = list(visible = F), points = F) %>%
add_boxplot(data = df[(!toplot)], x = ~group, y = ~val, split = ~group)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |