r - 使用 scale_color_manual 在 ggplot2 的图例中错误地标记来自多个几何的数据
问题描述
我想在同一个 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 包(v0.2.0)于 2018 年 10 月 16 日创建。
解决方案
似乎标签是按字典顺序排序的。(“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 包(v0.2.0)于 2018 年 10 月 16 日创建。
推荐阅读
- python - 将颜色过滤器添加到 Tk.Label
- c++ - 如何使用 MinGw G++ 编译器增加堆栈大小?
- laravel - 是否可以将 2 个变量传递给 View Composers 中的视图?
- java - MongoDB 4.4、Java 驱动程序 4.2.3 - InsertManyResult.getInsertedIds() 不返回所有插入文档的 ID
- sumo - 如何在当前的 SUMO 场景中添加额外的路线?
- php - 如何在 wordpress 中定义是否选中帖子的自定义复选框并基于该显示预定义的单词(例如:视频)?
- database - 如何使用 []struct{} 使用 gorm 将数据插入到 postgres 中?
- reporting-services - 如果低于某个值,如何将条形图标签更改为不可见
- python - 以编程方式读取在控制台窗口中选择的当前文本
- wordpress - WordPress自定义目录帖子标题未显示