Неправильные метки в легенде ggplot2, использующие scale_color_manual с данными из нескольких геомов - PullRequest
0 голосов
/ 16 октября 2018

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

suppressPackageStartupMessages(library(tidyverse))

ggplot() + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 8)), aes(area, color='1')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 4)), aes(area, color='4')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 2)), aes(area, color='16')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 1)), aes(area, color='64')) + 
  coord_cartesian(xlim=c(-10, 10)) + 
  scale_colour_manual(name = 'Number of samples', 
                      values =c('1'='black', '4'='red', '16'='green', '64'='blue'), 
                      labels = c('1', '4', '16', '64'))

Создано в 2018-10-16 с помощью пакета представитель (v0.2.0).

1 Ответ

0 голосов
/ 16 октября 2018

Вроде как ярлыки, отсортированные по лексикографии.(«1», «16», «4», «64»).С учетом этого факта метки могут быть изменены на («01», «04», «16», «64»).Это немного громоздко, но генерирует нужный мне сюжет.

suppressPackageStartupMessages(library(tidyverse))

ggplot() + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 8)), aes(area, color='01')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 4)), aes(area, color='04')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 2)), aes(area, color='16')) + 
  stat_ecdf(data = data.frame(area = rnorm(5000, sd = 1)), aes(area, color='64')) + 
  coord_cartesian(xlim=c(-10, 10)) + 
  scale_colour_manual(name = 'Number of samples', 
                      values =c('01'='black', '04'='red', '16'='green', '64'='blue'), 
                      labels = c('01', '04', '16', '64'))

Создано в 2018-10-16 с помощью пакета Представить (v0.2.0).

...