R 中的点图 'binning/grouping'

Dotplot 'binning/grouping' in R

我正在尝试在 R 中创建一个点图,类似于下图,其中每个组都与其他组明显分开:http://www.sthda.com/english/wiki/ggplot2-dot-plot-quick-start-guide-r-software-and-data-visualization

我的数据如下所示,其中我有一个要绘制的值,以及一个组列,该列应将数据分为不同的组 (1-5)(类似于 'dose' 中的列上期牙痛数据集link):

这是我目前使用的绘图代码:

p<-ggplot(new_df, aes(x=group, y=ploidy)) + 
  geom_dotplot(binaxis='y', stackdir='centerwhole', binpositions = 'bygroup', binwidth = 0.5, position = "dodge", dotsize = 0.2)

ggplot(new_df, aes(x=group, y=ploidy)) + 
  geom_dotplot(binaxis='y', stackdir='centerwhole',
               stackratio=0, dotsize=0.2, stackgroups = TRUE)
p + stat_summary(fun=median, geom="point", shape=18,
                 size=3, color="red")

它returns下面的情节: 我怀疑这里的问题是大多数值都在 2-3 范围内,因此它们溢出到另一个 bins/groups.

我尝试使用像牙痛数据集这样的简单数据集重新创建问题,但问题并没有出现在那些较小的数据集中。这是数据集的 link,因为用小样本数据集重新创建问题不起作用:http://sendanywhe.re/Y5O133EM

如有任何帮助,我们将不胜感激

我认为您溢出了分配的 space 通过使用每个人的指定位置绘制图表 观察(有时称为 'stacking')。反而 你应该 'jitter' 个人的立场 特定分配区域内的观察。 抖动,意味着引入少量 要避免的点位置的随机性(主要是 无论如何)过度绘制。

我将使用核心图形来说明这一点 以下虚构数据的 R。这引起了人们的注意 关于什么是错误的,而不是关于具体的编程解决方案 在ggplot,我会让你解决。

set.seed(2022)
a = round(rnorm(30, 50, 5))
b = round(rnorm(70, 55, 4))
c = round(rnorm(55, 40, 6))
d = round(rnorm(80, 45, 5))
x = c(a,b,c,d)
g = rep(1:4, c(30,70,55,80))


stripchart(x ~ g, meth="jitter", vertical=T, pch=20)

抱歉,本网站不允许 post 图片。希望你 你明白了。