R 使用geom_箱线图,在x轴上使用类型为double的变量

R 使用geom_箱线图,在x轴上使用类型为double的变量,r,ggplot2,R,Ggplot2,我的数据集如下所示: 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=gend

我的数据集如下所示:

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),…)
问题就会消失


我问这个问题是因为我想知道我是否可以在美学上把这个变量保持为两倍,并且仍然用它们的值来分隔箱线图。这种方法更方便,以便以后使用带有自定义中断的
缩放x\u连续

将组添加到美学中可以解决此问题。我添加了一个
scale\u x\u continuous
-调用,以演示此方法的工作原理,并演示如何使用
width
position\u 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))

什么是互动(性别,C),为什么它有效?
交互
通过将性别和C的值粘贴在一起,创建一个特殊的因子变量。当以
fill
-美学的形式提供时,我们可以看到它是如何工作的:

ggplot(my.df) +
  geom_boxplot(aes(x = C, y = value, fill = interaction(gender, C)))


当它被添加为
组时,它会告诉ggplot您想要哪些箱线图组

scale\u x\u discrete
的问题是,对于变量
x=C
的更大范围的值,例如,如果我设置
breaks=C(0.0,0.5,1.0)
,它不会得到完整的范围(实际上它在x轴上只显示“0.5”)。也许更自然的是,以与原始变量在注释中提到的“我的变量的更大范围的值
x=C
”相同的尺度来解决这个问题。原始帖子中的数据旨在重现问题,但实际数据当然有更多的值,包括该轴中变量的值。您可以将
group=interaction(gender,C)
添加到您的
aes
@kath中。实际上,这确实如预期的那样工作,尽管我不知道到底在做什么。如果你能详细解释一下,我会接受的。非常感谢。