使用 geom_violin 分层小提琴图以比较分布
Layering violin plots with geom_violin to compare distributions
我正在尝试使用小提琴图比较连续变量在各组中的分布。相当容易。但是,我想通过在背景中以具有低 alpha 值的灰色显示其中一组(参考)的分布来更容易地比较分布。像这样但是有小提琴情节:
我目前的方法绘制了两次数据。对于第一个 geom_violin
,我复制了参考组的数据并将其绘制为灰色。对于第二个 geom_violin
,我使用实际数据 d
。在此示例中,灰色和蓝色的两个小提琴图对于组“蓝色”应该看起来相同。但是,即使它们基于组“蓝色”的完全相同数据,它们也不相同。
我该如何解决这个问题?或者还有其他更好的方法吗?
d <- tibble(
group = sample(c("green", "blue"), 1000, replace = TRUE, prob = c(0.7, 0.3)),
x = ifelse(group == "green", rnorm(1000, 1, 1), rnorm(1000, 0, 3))
)
dblue <- filter(d, group == "blue")
dblue <- bind_rows(dblue, mutate(dblue, group = "green"))
ggplot(d, aes(x = factor(group), y = x)) +
geom_violin(data = dblue, fill = alpha("#333333", 0.2), color = alpha("#333333", 0)) +
geom_violin(fill = alpha("#0072B2", 0.8), color = alpha("#0072B2", 0))
将scale = "width"
添加到第二个geom_violin
ggplot(d, aes(x = factor(group), y = x)) +
geom_violin(data = dblue, fill = alpha("#333333", 0.2), color = alpha("#333333", 0)) +
geom_violin(fill = alpha("#0072B2", 0.8), color = alpha("#0072B2", 0),
scale = "width")
我正在尝试使用小提琴图比较连续变量在各组中的分布。相当容易。但是,我想通过在背景中以具有低 alpha 值的灰色显示其中一组(参考)的分布来更容易地比较分布。像这样但是有小提琴情节:
我目前的方法绘制了两次数据。对于第一个 geom_violin
,我复制了参考组的数据并将其绘制为灰色。对于第二个 geom_violin
,我使用实际数据 d
。在此示例中,灰色和蓝色的两个小提琴图对于组“蓝色”应该看起来相同。但是,即使它们基于组“蓝色”的完全相同数据,它们也不相同。
我该如何解决这个问题?或者还有其他更好的方法吗?
d <- tibble(
group = sample(c("green", "blue"), 1000, replace = TRUE, prob = c(0.7, 0.3)),
x = ifelse(group == "green", rnorm(1000, 1, 1), rnorm(1000, 0, 3))
)
dblue <- filter(d, group == "blue")
dblue <- bind_rows(dblue, mutate(dblue, group = "green"))
ggplot(d, aes(x = factor(group), y = x)) +
geom_violin(data = dblue, fill = alpha("#333333", 0.2), color = alpha("#333333", 0)) +
geom_violin(fill = alpha("#0072B2", 0.8), color = alpha("#0072B2", 0))
将scale = "width"
添加到第二个geom_violin
ggplot(d, aes(x = factor(group), y = x)) +
geom_violin(data = dblue, fill = alpha("#333333", 0.2), color = alpha("#333333", 0)) +
geom_violin(fill = alpha("#0072B2", 0.8), color = alpha("#0072B2", 0),
scale = "width")