我有100种价值观,我想以某种方式将其可视化.

sorted <- sort(rnorm(100000))
dots <- c(rep(0, 100))
for (i in (1:100)){
  dots[i] <- sorted[i*1000-500]
}
plot(data.frame(dots, 1))

enter image description here

然而,这有许多相互重叠的小圆圈.因此,我想上下移动圆圈(而不是横向),使它们不再重叠.实际上,我希望这些圆圈不要互相接触.(因此,需要某种最小距离.)此外,我想保持一切尽可能接近原来的.(我不是在寻找一些随机抖动.)

如下所示(尽管本例并未完全优化):

enter image description here

这需要某种优化,我怀疑某些现有的库中可能已经提供了这种优化.

问题是:哪个图书馆能有这样的例行公事?

推荐答案

谢谢你增加了预期的yields ;在我看来,这是一个蜂拥而至的地块.

# install.packages("beeswarm")
library(beeswarm)

sorted <- sort(rnorm(100000))
dots <- c(rep(0, 100))
for (i in (1:100)){
  dots[i] <- sorted[i*1000-500]
}

beeswarm(data.frame(dots), 
         horizontal = TRUE)

创建于2024-02-05与reprex v2.1.0

用红色的原创圆点进行比较:

beeswarm(data.frame(dots), 
         horizontal = TRUE)

# add the original points
points(data.frame(dots, 1.1), col = "red")

创建于2024-02-05与reprex v2.1.0

如果你研究蜂群方案(https://rdrr.io/cran/beeswarm/man/beeswarm.html),你可以使用不同的方法(method = c("swarm", "compactswarm", "center", "hex", "square"))和不同的优先级(priority = c("ascending", "descending", "density", "random", "none")).您也可以更改间距,使点不会接触,但要注意,间距可能会改变x位置和y位置.无论如何,你应该能够调整你的情节,以获得你想要的结果.

R相关问答推荐

使用gggplot 2在R中重新调整面板和y轴文本大小

将模拟变量乘以多个观测结果中的模拟变量

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

使用ggplot将平滑线添加到条形图

根据收件箱中的特定值提取列名

在R中替换函数中的特定符号

ggplot的轴标签保存在officer中时被剪切

在for循环中转换rabrame

如何在Chart_Series()中更改轴值的 colored颜色 ?

将包含卷的底部25%的组拆分为2行

标识R中多个列中缺少的唯一值

如何使用STAT_SUMMARY向ggplot2中的密度图添加垂直线

如何使用For-R循环在向量中找到一系列数字

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

在点图上绘制置信度或预测区间ggplot2

使用列名和r中的前缀 Select 列的CREATE函数

将CSV转换为R中的自定义JSON格式

在子图内和子图之间对齐行数不均匀的表格罗布对

Data.table条件合并

如何使用包含要子集的值的列表或数据框来子集多个列?