如何调整ggplot2点的相对透明度

问题描述 投票:1回答:3

我想通过使ggplot2图表上的某些点不那么透明,而其余点逐渐淡出背景来使它们突出。但是,无论我给点集指定两个什么alpha值,它们的相对透明度都是相同的。

这里是0.80.7

x <- mtcars
x$opacity <- ifelse(x$cyl == 6, 0.8, 0.7)

ggplot(x, aes(x = wt, y = mpg, color = cyl, alpha = opacity)) +
  geom_point()

ggplot2 scatterplot with 0.8 and 0.7 alpha for two sets of points

这是0.80.1的外观相同:

x$opacity <- ifelse(x$cyl == 6, 0.8, 0.1)

ggplot(x, aes(x = wt, y = mpg, color = cyl, alpha = opacity)) +
  geom_point()

ggplot2 scatterplot with 0.8 and 0.1 alpha for two sets of points我如何微调该相对alpha,以使这两个集合的透明度更接近?现在,两个数字的值似乎无关紧要。具体来说,在这种情况下,我希望较暗的点(具有较高的alpha值)更加透明。

r ggplot2 alpha-transparency
3个回答
1
投票

将scale_alpha_continuous添加到绘图中并定义范围。例如

scale_alpha_continuous(range = c(0.7, 0.8))

1
投票

由于您正在尝试将实际的Alpha值传递给美学映射,因此请务必使用

scale_alpha_identity()

否则,ggplot将重新调整您的值,就像它自动为您创建颜色一样。


1
投票

您正在将值0.7和0.8映射到alpha,而不必using将其用于alpha。一种更快的方法是映射条件,然后设置alpha:

library(ggplot2)

ggplot(mtcars, aes(x = wt, y = mpg, color = cyl, alpha = cyl == 6)) +
    geom_point() + 
    scale_alpha_discrete(range = c(0.2, 0.8))
#> Warning: Using alpha for a discrete variable is not advised.

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9CMXBOUEZELnBuZyJ9” alt =“带有alpha的点”>“>

© www.soinside.com 2019 - 2024. All rights reserved.