r - 按组变量对绘图箱图中的抖动进行着色

标签 r plot plotly boxplot

我正在处理如下数据集

Age = sample(10:99, 50, replace=T)
Level = sample( LETTERS[1:4], 50, replace=TRUE )
df = as.data.frame(cbind(Age, Level))

这是我的箱线图,其中变量 Age 存在抖动

library(plotly)
plot_ly(y = ~df$Age, type = "box", boxpoints = "all", jitter = 0.3,
        pointpos = -1.8)

enter image description here

我的问题是,如何根据级别变量对左侧的抖动点进行不同的着色?现在我的数据集中有四个级别,A、B、C、D。级别 A 对应的点应该是某种颜色,级别 B 对应的点应该是不同的颜色,依此类推。

我试过了

plot_ly(y = ~df$Age, type = "box", boxpoints = "all", jitter = 0.3, color = ~df$Level,pointpos = -1.8)

这给了我四个不同的箱线图。我的目标只是一张箱线图,其中抖动根据级别变量着色。因此,非常感谢任何建议或帮助。

最佳答案

我不确定这是否可能,但这里有一个替代方案。也许您可以使用子图并将散点图和箱线图组合在一起。

首先为散点图创建一个虚拟 x 变量。

df$AgeX <- rnorm(50, 2, 0.3)

然后合并两个图

p1 <- plot_ly(df, y = ~Age, x=~AgeX) %>%
  add_markers(name = ~"jitter", color=~Level) %>% layout(xaxis = b1y)
p2 <- plot_ly(df, y = ~Age) %>%
  add_boxplot(name = ~"boxplot") 
p <- subplot(p1, p2, shareY = TRUE, widths = c(0.2, 0.8), margin = 0)
p

enter image description here

您可以使用 %>% hide_legend() 删除图例,您只需调整边距和宽度即可获得您真正想要的内容。

关于r - 按组变量对绘图箱图中的抖动进行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41323386/

相关文章:

plot - gnuplot - 使用线条颜色作为第三个变量不会生成所需的输出

python - 日期列和整数列之间的 Seaborn 热图

r - 使用 Rplotly 创建条形图和饼图子图时出现问题

r - 相当于 abline 在 plotly

r - 想要用 R 读取 .eeg 文件

r - R 中的数字格式

r - 如何反转绘图上的 y 轴

r - 使用 add_trace 将多条线添加到 plot_ly 图

r - 如何使用 stargazer 以科学记数法显示系数

r - 函数生成;更改其他功能的默认值(部分)