Как настроить относительную прозрачность точек ggplot2

Я хочу выделить некоторые точки на графике ggplot2, придав им меньшую прозрачность, в то время как остальные исчезают на заднем плане. Но независимо от того, какие два значения альфы я даю наборам точек, их относительная прозрачность одинакова.

Вот 0.8 против 0.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 диаграмма рассеяния с альфа-каналом 0,8 и 0,7 для двух наборов точек

А вот 0.8 и 0.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 диаграмма рассеяния с альфа-каналом 0,8 и 0,1 для двух наборов точек Как точно настроить относительный альфа-канал, чтобы два набора были ближе по прозрачности? Прямо сейчас значения двух чисел, похоже, не имеют значения. В частности, в этом случае я хочу, чтобы более темные точки (с более высокой альфой) были более прозрачными.


person Sam Firke    schedule 14.04.2020    source источник


Ответы (3)


Поскольку вы пытаетесь передать фактические альфа-значения эстетическому отображению, обязательно используйте

scale_alpha_identity()

В противном случае ggplot изменит масштаб ваших значений так же, как он автоматически создал цвета для вас.

person MrFlick    schedule 14.04.2020

Добавьте scale_alpha_continuous на свой график и определите диапазон. например

scale_alpha_continuous(range = c(0.7, 0.8))
person CFD    schedule 14.04.2020

Вы сопоставляете значения 0,7 и 0,8 с альфа-каналом, не обязательно используя их для альфа-канала. Более быстрый способ — отобразить условие, а затем установить альфу:

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.

точки с альфа-каналом

person alistaire    schedule 14.04.2020