Как рассчитать альфа перекрывающихся точек с заданной прозрачностью? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть диаграмма рассеяния, которая перекрывает прозрачные точки.Я хочу отобразить, как выглядит цвет отдельной точки, а также как выглядят 5 перекрывающихся точек.

Отредактированные MWE и Ответ

alpha <- .2
gcol <- grey(0,alpha)
plot(1:5,rep(1,5), pch=16, col=gcol)
for(i in 2:5){ points(i:5, rep(1,5-i+1), pch=16, col=gcol) }

text(x=1:5,y=1.2,labels=paste0("alpha =? ",round(alpha^(1:5),5)))
points(x=1:5,y=rep(1.15,5), pch=16,
    col= sapply(round((1-alpha)^(1:5),5), function(g) grey(0, 1-g) ) )

text(x=1:5, y=0.8,labels=paste0("alpha =? ",round(alpha*(1:5),5)))
points(x=1:5, y=rep(0.75,5), pch=16,
    col= sapply(round(alpha*(1:5),5), function(g) grey(0, g) ) )

1 Ответ

0 голосов
/ 16 апреля 2019

Вот способ визуализации одной точки по сравнению с пятью точками с уровнем alpha 0,2 с использованием ggplot2:

library(ggplot2)

df <- data.frame(x = c(1, rep(2,5)),
                 y = c(rep(1,6)),
                 lab = c('One Point', 'Five Points', rep('',4)))

ggplot(data=df, aes(x,y, label=lab)) +
  geom_point(alpha=0.2, size=14) +
  geom_text(vjust=-2, size=8) +
  scale_x_continuous(limits = c(.5, 2.5)) +
  theme_minimal() +
  labs(y='',x='') +
  theme(
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks = element_blank(),
    panel.background = element_blank(),
    panel.grid.major = element_blank(), 
    panel.grid.minor = element_blank(),
    axis.line = element_line(colour = "black"),
    panel.border = element_rect(colour = "black", fill=NA, size=5))

alpha plot

...