使用scale_color_manual和来自多个几何的数据在ggplot2的图例中错误地标记了标签

时间:2018-10-16 12:30:19

标签: r ggplot2 scale-color-manual

我想在同一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'))

reprex package(v0.2.0)于2018-10-16创建。

1 个答案:

答案 0 :(得分:1)

标签似乎按字典顺序排序。 (“ 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'))

reprex package(v0.2.0)于2018-10-16创建。