垂直点显示同一地块中几个组的分布

问题描述 投票:0回答:1

我有一个具有以下结构的数据框:

dat <- data.frame(
values = c (2,  5,  6,  7,   
            4,  6,  8,  9,   
             6, 8,  10, 13),
race = c("black", "black", "black",  "black", 
          "white", "white", "white",   "white",
           "Hispanic", "Hispanic",  "Hispanic",  "Hispanic"))

我想绘制数据图表,以便每个“种族”出现在 x 轴上,“值”出现在 y 轴上。我真的不想要条形图——相反,我想绘制所有数据点(因为条形图掩盖了可能存在异常值的事实,并且它隐藏了每个分布中的差距等)

我知道大多数人在这里更喜欢箱形图、小提琴图或其他变体……但我真的想要一个垂直点图,它按种族显示所有数据点,就像我手绘的那样(请参见下文).

我试过以下方法:

p <- ggplot(data = dat, 
aes(x = race, y =  values)) + geom_point()
p + facet_wrap(~race, nrow = 1)

但是,当然,我最终得到了 3 个面板——像这样:

但我希望所有 3 列点都出现在一个面板中。

这真的是我想要的:

(我手绘的图表并没有反映我上面数据框中的实际数据,但你明白了)

r ggplot2 visualization categorical-data
1个回答
1
投票

有时候,R 比人们想象的要简单。

ggplot(dat) +
  geom_point(aes(x = race, y = values, color = race)) +
  theme_classic()

© www.soinside.com 2019 - 2024. All rights reserved.