#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$
помощью withinggplot
. Я бы рекомендовал переименовать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, а не те, что в фрейме данных