Добавление легенды для вертикальных линий гистограмм - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь поставить легенду для графика, который я создаю. Идея состоит в том, чтобы сравнить среднее значение и медианы перекошенного и симметричного распределения. Это то, что я сейчас использую в качестве кода, однако

show.legend = TRUE 

код не выполняет работу.

set.seed(19971222)

sym <- as.data.frame(cbind(c(1:500), rchisq(500, df = 2))) # generate 500 random numbers from a symetric distribution
colnames(sym) <- c("index", "rnum")

sym_mean <- mean(sym$rnum)
sym_med <- median(sym$rnum)
# get into a format that tidyverse likes
central_measures <- as.data.frame(cbind(sym_mean, sym_med))
colnames(central_measures) <- c("mean", "median")

sym %>% ggplot(aes(sym$rnum)) + 
  geom_histogram(binwidth = 0.4, fill = "steelblue", colour = "navy", alpha = 0.9) + 
  geom_vline(xintercept = sym_mean, colour = "red", show.legend = TRUE) + 
  geom_vline(xintercept = sym_med, colour = "yellow", show.legend = TRUE) + 
  labs(title = "Histogram of 500 Randomly Generated Numbers from the Chi-Squared Distribution", 
       x = "Value", 
       y = "Frequency") +
  theme_minimal()

Я просто хочу, чтобы на стороне была легенда, гласящая, что красный - это «среднее», а желтый - «средний».

Спасибо!

1 Ответ

0 голосов
/ 22 января 2019

Привет, извините, я немного отвлекся, и мои первые предложения были немного неуместны. Вот один из способов достижения цели - добавить легенду для ваших мер централизованности.

# use this instead of central_measures
central_values <- data.frame(measurement = c("mean", "median"),
                             value = c(sym_mean, sym_med))

sym %>% ggplot(aes(sym$rnum)) + 
  geom_histogram(binwidth = 0.4, fill = "steelblue", colour = "navy", alpha = 0.9) + 
  geom_vline(data = central_values, aes(xintercept = value, color = measurement)) +
  scale_color_manual(values = c("red", "orange"), name = NULL) +
  labs(title = "Histogram of 500 Randomly Generated Numbers from the Chi-Squared Distribution", 
       x = "Value", 
       y = "Frequency") +
  theme_minimal()

enter image description here

Дайте мне знать, если у вас есть другие проблемы, и еще раз извините, что сбили вас с пути с моим комментарием!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...