R语言 防止ggplot2散点图中特定数据点的重叠绘制

ct2axkht  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(190)

我试图找到一种方法来防止ggplot2散点图中的点重叠,同时理想地不改变非重叠点的位置(在本例中,不移动id为1、4或5的点)。我希望保持每个点的相对位置,但它们可以根据需要在x和y方向上稍微移动。

library(ggplot2)

df <- data.frame(
  id = 1:9,
  x = c(1, 2, 2.1, 4, 5, 8.7, 9.1, 9, 8.9),
  y = c(10, 9, 9, 7, 6, 2.4, 2, 2.1, 2),
  size = rep(1:4, length.out = 9)
)

plot <- ggplot(df, aes(x = x, y = y)) +
  geom_point(aes(size = size), alpha = 0.8, shape = 21, color = "black") +
  geom_text(aes(label = id, size = 0.4*size), color = "black") +
  scale_size_area(max_size = 8) +
  xlim(1, 10) +
  ylim(1, 10) +
  theme_bw()

plot

Idea of ideal Scatterplot without overlapping points
我试过position_jitter,但是为了防止重叠,我不得不抖动所有的点,以至于它们的相对位置无法识别。我也试过position_dodge,但是,由于一些点需要在x轴上移动,一些点需要在y轴上移动,以防止重叠,我基本上会手动为原始数据集中的100个数据点执行此操作。我认为与geom_text_repelgeom_label_repel移动标签的方式类似,它们会移动最小数量,因此不会“t重叠将是理想的!边注:这是我的第一篇堆栈溢出的文章,对任何错误表示歉意!!

nzk0hqpo

nzk0hqpo1#

R的基本绘图函数也可以使用抖动函数,这可能适合您的需要。否则,我建议通过添加以下内容来更改ggplot中点的透明度

geom_point(alpha = 0.1)

另外,你可以试着改变点的大小,

geom_point(size=1.5)

您也可以尝试更改点的颜色或形状,但您需要另一个变量来确定点的颜色或形状。

相关问题