Сделать цвет точек geom_point немного светлее с помощью альфа?

Я хочу, чтобы мои линии и точки были немного светлее для последних 7 точек данных. Я пытался использоватьalpha, но независимо от того, насколько мало я использую, точки слишком светлые. Могу ли я использовать альфа-канал (и если да, то как), или мне придется вручную изменять цвета?

Я использую tidyverse 1.3.0.

Пример следует.

foo <- data.frame(x=seq(1:10))
foo$y <- foo$x
foo$alpha <- c(rep(1, 7), rep(0.5, 3))
ggplot(foo, aes(x, y)) + geom_point(aes(alpha=alpha))

с альфа =0,5:

с альфа =0,999, такая же яркость (слишком светлая):

2 ответа

Решение

Если вы хотите установить alpha к определенному значению, вы должны установить его как аргумент вне aes, например geom_point(alpha = foo$alpha) или использовать scale_alpha_identity. Попробуй это:

foo <- data.frame(x=seq(1:10))
foo$y <- foo$x
foo$alpha <- c(rep(1, 7), rep(0.5, 3))

library(ggplot2)

ggplot(foo, aes(x, y)) + 
  geom_point(aes(alpha=alpha)) +
  scale_alpha_identity()

foo$alpha <- c(rep(1, 7), rep(0.1, 3))

ggplot(foo, aes(x, y)) + 
  geom_point(aes(alpha=alpha)) +
  scale_alpha_identity()

Что касается получения очень конкретных значений с помощью альфа-канала, см. Эту связанную ветку.

Если вам не нужна "прозрачность", а вы просто хотите немного осветлить цвета, вы можете сделать это с помощью shades или colorspace пакет.

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

Если вам нужно изменить только один цвет, пакет цветовых пространств будет немного проще. Здесь с использованием пакета цветов:

library(ggplot2)
library(colorspace)

foo <- data.frame(x = seq(1:10))
foo$y <- foo$x
foo$lighter <- c(rep("black", 7), rep(lighten("black", 0.5), 3))

ggplot(foo, aes(x, y)) +
  geom_point(aes(color = lighter)) +
  scale_color_identity()

Другие вопросы по тегам