Как настроить относительную прозрачность точек ggplot2 - PullRequest
1 голос
/ 14 апреля 2020

Я хочу, чтобы некоторые точки выделялись на графике 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 scatterplot with 0.8 and 0.7 alpha for two sets of points

А вот 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 scatterplot with 0.8 and 0.1 alpha for two sets of points Как я могу настроить это относительная альфа, так что два набора ближе к прозрачности? Сейчас значения двух чисел, похоже, не имеют значения. В частности, в этом случае я хочу, чтобы более темные точки (с более высокой альфа) были более прозрачными.

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

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

scale_alpha_identity()

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

1 голос
/ 14 апреля 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.

points with alpha

1 голос
/ 14 апреля 2020

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

scale_alpha_continuous(range = c(0.7, 0.8))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...