R语言 使用ggplot构建聚类图

rta7y2nd  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(132)

我想用我的数据绘制一个聚类图,如下所示

library(ggplot2)
set.seed(1)
dat1 = data.frame(val = rnorm(20, 0, 1), class1 = rep('a', 20), class2 = rep('X', 20))
dat2 = data.frame(val = rnorm(20, 0, 1), class1 = rep('b', 20), class2 = rep('X', 20))
dat3 = data.frame(val = rnorm(20, 0, 1), class1 = rep('a', 20), class2 = rep('Y', 20))
dat4 = data.frame(val = rnorm(20, 0, 1), class1 = rep('b', 20), class2 = rep('Y', 20))
dat = rbind(dat1, dat2, dat3, dat4)

ggplot(dat, aes(y = val)) +
  geom_point(aes(x = class2, color = class1))

有了这个,我得到下面的情节

正如您所看到的,对应于class1的点混合在一列中,用于两个X & Y。然而,我想保持对应于class1 = aclass1 = b的点并排,它们之间可能有一点分离的空间。
有没有办法用ggplot来实现这一点?
非常感谢你的时间。

acruukt9

acruukt91#

我认为这是一个完美的时间来使用方面:

ggplot(dat, aes(x = class1, color = class1, y = val)) +
  geom_point() +
  facet_wrap(vars(class2))

如果你喜欢你的原始结构,只想增加一点空间,我们可以使用position = position_dodge,同时指定一个group美学,同时考虑class1class2

ggplot(dat, aes(y = val, x = class2, color = class1)) +
  geom_point(aes(group = interaction(class1, class2)),
             position = position_dodge(width = 0.1))

相关问题