【发布时间】:2016-11-04 15:41:55
【问题描述】:
在ggplot2中使用命名向量手动设置颜色时,如果使用变量作为名称之一,颜色将不会出现在最终绘图中。
library(ggplot2)
first_species <- 'setosa'
colours <- c(first_species = 'black',
'versicolor' = 'cadetblue',
'virginica' = 'hotpink')
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)
但是,如果我使用名称创建命名向量,则绘图会按预期显示:
colours <- c('black', 'cadetblue', 'hotpink')
names(colours) <- c(first_species, 'versicolor', 'virginica')
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)
谁能向我解释这种行为?我怀疑它与非标准评估有关(ggplot2 使用的是名称而不是值?)。
建议在手动比例设置功能中使用变量的最佳方法,将不胜感激!
【问题讨论】:
-
在第一个示例中,在颜色
-
如果您想要一行代码来设置名称,而不是使用两行
names,您可以使用setNames,这是一种方便的功能。