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

我所拥有的数据如下所示,其中我有一个要绘制的值,以及一个组列,它应该将数据放入不同的组(1-5) (类似于前面链接中牙痛数据集中的“剂量”列):

这是我目前正在使用的绘图代码:
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")并返回以下情节:

我怀疑这里的问题是,大多数值位于2-3的范围内,因此它们会溢出到其他的回收箱/组中。
我试着用简单的数据集(如牙痛数据集)重新创建问题,但是这个问题不会在那些较小的数据集中出现。这里有一个指向数据集的链接,因为用小样本数据集重新创建问题不起作用:http://sendanywhe.re/Y5O133EM
如能提供任何帮助,将不胜感激。
发布于 2022-02-26 01:49:26
我认为,通过为每个单独的观测使用指定的位置(有时称为“堆叠”),您正在将图表中所分配的空间溢出。相反,您应该“抖动”单个观测在特定分配区域内的位置。抖动,是指在点的位置引入少量的随机性,以避免(大多数情况下)过度绘制。
我将使用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)对不起,不允许在此网站上发布图片。希望你能有个主意。
https://stackoverflow.com/questions/71270931
复制相似问题