我试图找到一种方法来防止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_repel
和geom_label_repel
移动标签的方式类似,它们会移动最小数量,因此不会“t重叠将是理想的!边注:这是我的第一篇堆栈溢出的文章,对任何错误表示歉意!!
1条答案
按热度按时间nzk0hqpo1#
R的基本绘图函数也可以使用抖动函数,这可能适合您的需要。否则,我建议通过添加以下内容来更改ggplot中点的透明度
另外,你可以试着改变点的大小,
您也可以尝试更改点的颜色或形状,但您需要另一个变量来确定点的颜色或形状。