问题
我有一个x变量-例如大小是有意义的,这样某个东西的大小就可以是另一个东西的两倍。我想把x和y(其他变量)联系起来。同时,由于采样,x不是连续变化的,而是离散的,因为只有几个不同的对象类型,并且相同类型的所有对象具有相同的大小(例如,X)。大小为1、3或10)。我想用像geom_boxplot
或geom_violin
这样的几何图形来显示x和y之间的关系。
然而,问题是:如果我保持x为数字,那么我只能得到一个箱线图/小提琴。如果我将其转换为一个因子(如下所示),那么几何体之间的距离并不反映x中的距离。例如,1和3之间的距离与3和10之间的距离相同。
有没有一种方法可以离散数据,但改变间距,使其反映x轴上的实际差异,并使用这些几何?
代码
# Seed for reproducibility
set.seed(20230518)
# Create random data
n <- 10
df <- data.frame(x = factor(rep(c(1, 3, 10), each = n)),
y = c(rnorm(n), rnorm(n), rnorm(n)))
# Box plot version
ggplot(df, aes(x = x, y = y)) + geom_boxplot() + geom_point()
# Violine plot verion
ggplot(df, aes(x = x, y = y)) + geom_violin() + geom_point()
箱线图
小提琴
预期解决方案
几何图元之间的距离反映了x的差异。这应该与geom_boxplot
和geom_violin
类似,除了以下几点:
# Nnumeric
ggplot(df, aes(x = as.numeric(as.character(x)), y = y)) + geom_point()
2条答案
按热度按时间kyks70gy1#
也许你想要这个,它反映了实际的距离。
创建于2023-05-18带有reprex v2.0.2
pqwbnv8z2#
添加缺失因子水平,然后将drop设置为FALSE,这也适用于
geom_violin
。添加断点以隐藏其他x值: