Цветовая легенда с geom_text_repel и geom_point

Как можно раскрасить точки рядом с метками легенды? scale_color_manual или scale_fill_manual не работают. Также как я могу заменить точки в легенде на квадраты? благодаря

       set.seed(1)
library(ggplot2)
library(ggrepel)
df <- data.frame(n=runif(8),y=1:8,l=letters[1:8],col=palette.colors(8))

p_vol <- ggplot(df, aes(n, y, label = l)) +
  geom_point(aes(fill=l),color = df$col) +
  geom_text_repel(col=df$col)+theme_classic()
print(p_vol)

2 ответа

Решение

Вам нужно будет включить аргумент цвета в эстетический вызов в geom_point(), установка color = l. Тогда вы можете использовать scale_color_manual использовать желаемые цвета.

p_vol <- ggplot(df, aes(n, y, label = l)) +
  geom_point(aes(fill=l, color = l)) +
  geom_text_repel(col=df$col) +
  theme_classic() +
  scale_color_manual(values = df$col)

Также вы можете попробовать включить fill из aes()используя цвета, которые есть в вашем фрейме данных. Здесь код, я использовал разные цвета, потому что у меня недостаточно знаний о функции palette.colorsу вас были цвета. Также используя scale_fill_identity() берет цвета непосредственно из переменной в ваших данных (те, которые определены в fill). Вот код:

       set.seed(1)
library(ggplot2)
library(ggrepel)
library(RColorBrewer)
df <- data.frame(n=runif(8),y=1:8,l=letters[1:8],col=rainbow(8))
#Plot
ggplot(df, aes(n, y, label = l,color=l,fill=col)) +
  geom_point() +
  geom_text_repel(show.legend = F)+theme_classic()+
  scale_fill_identity()

Вывод:

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