按组变量在 plotly box plot 中着色抖动
Coloring jitters in a plotly box plot by group variable
我正在处理如下数据集
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)
我的问题是,我如何根据级别变量对左侧的抖动点进行不同的着色?现在我的数据集中有四个级别,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
您可以使用 %>% hide_legend()
删除图例,只需调整边距和宽度即可获得您真正想要的内容。
我正在处理如下数据集
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)
我的问题是,我如何根据级别变量对左侧的抖动点进行不同的着色?现在我的数据集中有四个级别,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
您可以使用 %>% hide_legend()
删除图例,只需调整边距和宽度即可获得您真正想要的内容。