R Plotly设置scalemode='width'无法统一所有小提琴图宽度如何解决
问题原因
你遇到的scalemode = "width"不生效的问题,是因为分组小提琴模式(violinmode = "group")下,该参数默认仅在同一个X轴分类的组内生效,跨X轴分类的小提琴宽度仍然会和对应分组的样本量成正比。
解决方法
只需要在plot_ly的参数中新增scalegroup参数,将所有小提琴归到同一个缩放组中,即可让所有小提琴的最大宽度完全统一:
p = plot_ly( data = df_plot, type = "violin", x = ~eval(parse(text = cat_var1)), y = ~eval(parse(text = num_var)), color = ~eval(parse(text = cat_var2)), colors = my_palette(n_levels2), spanmode = "hard", alpha = 1, box = list(visible = FALSE), meanline = list(visible = FALSE), points = FALSE, scalemode = "width", scalegroup = "all_violins" # 新增这一行即可 ) %>% # 后续layout部分无需修改
scalegroup参数会指定所有共享该参数值的trace使用同一套缩放规则,配合scalemode = "width"就能实现所有小提琴的最大宽度完全一致,和你提到的ggplot2输出效果匹配。
内容的提问来源于stack exchange,提问作者Rafael Cardoso
相关产品推荐
相关产品推荐

