我想用 geom_point 繪制很多透明度極高的點,即接近 0 的 alpha 值。
問題是似乎有一個“斷點”,在該點處不再繪制任何點。在下面的代碼中,我希望右下角的圖仍然顯示點,但沒有繪制任何內容。
到底是怎么回事?
library(tidyverse)
library(patchwork)
someData <- data.frame(x = rnorm(n = 100000),
y = rnorm(n = 100000)) %>%
mutate(alp = 1)
p1 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 0.5))
p2 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 0.05))
p3 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 0.005))
p4 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 0.0025))
print((p1 p2)/(p3 p4))
uj5u.com熱心網友回復:
這里的答案是只有 256 個 alpha 值可用 (0:255),因此小于 1/255 的 alpha 值被視為 0。
將其顯示為一個最小的示例:
p1 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 1/254.99))
p2 <- ggplot(someData)
geom_point(aes(x = x, y = y, alpha = alp))
scale_alpha_continuous(range = c(0, 1/255.01))
print(p1 p2)

對于如此密集的資料,您最好堅持使用geom_density2d_filled

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450745.html
上一篇:如何添加45度線?
