我的数据集如下所示:
df = tibble (
gender = rep(c("fem","mal"),each=10),
C = rep(rep(c(0,1), each=5),2),
r = rep(c(0,1,2,3,4),4),
value = rnorm(n = 20,mean = 5,sd = 1)
)
用以下命令绘制时出现问题:
df %>% ggplot() + geom_boxplot(aes(x=C,y=value,fill=gender))
由于框线图没有用变量C的值分隔,因此我推测是因为它的类型为double。实际上,如果我写aes(x=factor(C), ...)
,问题就会消失。
我问,是因为我想知道我是否可以在美学上将此变量保持为两倍,并且仍按其值将箱图分开。为了以后在自定义间隔中使用scale_x_continuous
,此方法更加方便。
答案 0 :(得分:1)
将一组添加到您的美学即可解决该问题。我添加了一个scale_x_continuous
-调用以演示该方法的工作,并演示如何使用width
和position_dodge
来操纵箱形图的宽度。
ggplot(df) +
geom_boxplot(aes(x = C, y = value, fill = gender, group = interaction(gender, C)),
position = position_dodge(0.1), width = 0.1) +
scale_x_continuous(breaks = seq(0, 1, 0.2))
什么是interaction(gender, C)
?为什么起作用?
interaction
通过将性别和C的值粘贴在一起来创建特殊因子变量。当以fill
-美学的方式提供
ggplot(my.df) +
geom_boxplot(aes(x = C, y = value, fill = interaction(gender, C)))
当它添加为group
美学符号时,它会告诉ggplot您想要拥有哪些boxplot-group。