Добавьте легенду к geom_point, наложенную на geom_boxplot
Итак, я создаю коробчатую диаграмму данных, а затем добавляю контрольную точку к этим данным. Я хочу, чтобы моя легенда фиксировала, что представляет собой тип данных geom_points. Благодаря!
ggplot(data = NULL) +
geom_boxplot(data = discuss_impact_by_county,
aes(x=reorder(State,discuss, FUN = median),y=discuss),
outlier.shape = NA) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
labs(x = "States") +
geom_point(data = by_state,
aes(x = State, y = discuss_happen_difference),
col = "red",
size = 3,
show.legend = TRUE)
1 ответ
Если вам нужна легенда, вам нужно нанести на карту эстетику. В вашем случае отобразите что-нибудь на
color
aes, т.е. двигаться
col="red"
в
aes()
и использовать
scale_color_manual
для установки значения и метки легенды, которые будут присвоены цветной метке
"red"
.
Поскольку у вас есть только одна "категория" очков, вы можете просто сделать
scale_color_manual(values = "red", label = "We are red points")
чтобы установить цвет и метку. В случае, если у вас есть несколько точек с разными цветами, лучше использовать именованный вектор, чтобы назначить цвета и метки легенды правильным "меткам цвета", т.е.
scale_color_manual(values = c(red = "red"), label = c(red = "We are red points"))
.
Используя некоторые случайные данные примера, попробуйте следующее:
library(ggplot2)
library(dplyr)
set.seed(42)
discuss_impact_by_county <- data.frame(
State = sample(LETTERS[1:4], 100, replace = TRUE),
discuss = runif(100, 1, 5)
)
by_state <- discuss_impact_by_county %>%
group_by(State) %>%
summarise(discuss_happen_difference = mean(discuss))
#> `summarise()` ungrouping output (override with `.groups` argument)
ggplot(data = NULL) +
geom_boxplot(data = discuss_impact_by_county,
aes(x=reorder(State,discuss, FUN = median),y=discuss),
outlier.shape = NA) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
labs(x = "States") +
geom_point(data = by_state,
aes(x = State, y = discuss_happen_difference, col = "red_points"),
size = 3,
show.legend = TRUE) +
scale_color_manual(values = "red", label = "We are red points")