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

#r #ggplot2 #legend #ggrepel #geom-point

#r #ggplot2 #легенда #ggrepel #геометрическая точка

Вопрос:

как можно раскрасить точки рядом с надписями легенды? 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)
  

введите описание изображения здесь

Ответ №1:

Вам нужно будет включить аргумент color в эстетический вызов в 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)
  

Комментарии:

1. Не рекомендуется вызывать столбцы с df$ помощью within ggplot . Я бы рекомендовал переименовать col столбец в colors или какой-либо другой не аргумент.

Ответ №2:

Также вы можете попробовать включить 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()
  

Вывод:

введите описание изображения здесь

Комментарии:

1. Я обнаружил, что заливка не требуется, на самом деле scale_fill_identity() даже без заливки использует стандартные цвета ggplot, а не те, что в фрейме данных