Říd*_*ící 2 plot visualization r
我有 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))
Run Code Online (Sandbox Code Playgroud)
然而,这有许多相互重叠的小圆圈。因此,我想上下移动圆圈(而不是横向移动),使它们不再重叠。事实上,我希望这些圆圈甚至不互相接触。(因此,需要某种最小距离。)此外,我希望所有内容都尽可能接近原始内容。(我不是在寻找一些随机抖动。)
看起来像这样的东西(尽管这个例子没有完美优化):
这需要某种优化,我怀疑某些现有库可能已经提供了这种优化。
问题:哪个图书馆可以有这样的例程?
感谢您添加预期的输出;在我看来,这就像一个蜂群情节,例如
# 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)
Run Code Online (Sandbox Code Playgroud)
创建于 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")
Run Code Online (Sandbox Code Playgroud)
创建于 2024-02-05,使用reprex v2.1.0
如果您查看 beeswarm 软件包 ( https://rdrr.io/cran/beeswarm/man/beeswarm.html ),您可以使用不同的方法 ( method = c("swarm", "compactswarm", "center", "hex", "square")
) 和不同的优先级 ( priority = c("ascending", "descending", "density", "random", "none")
)。您还可以更改间距,使点不接触,但请注意间距可以更改 x 位置和 y 位置。无论如何,你应该能够调整你的情节以获得你想要的结果。