R 有人能解释一下命名向量在手动绘制比例中的行为吗?
在ggplot2中使用命名向量以手动比例设置颜色时,如果使用变量作为名称之一,则颜色将不会显示在最终打印中R 有人能解释一下命名向量在手动绘制比例中的行为吗?,r,ggplot2,nse,R,Ggplot2,Nse,在ggplot2中使用命名向量以手动比例设置颜色时,如果使用变量作为名称之一,则颜色将不会显示在最终打印中 library(ggplot2) first_species <- 'setosa' colours <- c(first_species = 'black', 'versicolor' = 'cadetblue', 'virginica' = 'hotpink') ggplot(iris) + aes(x =
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)
库(ggplot2)
首先,当你做以下事情时:
c(n=1)
这就像做:
runif(n=10)
n
在这里是一个名称,不会像变量一样进行计算。这是一个命名的参数。您可以引用像runif(“n”=10)
这样的名称,这是解析器的一项功能,允许您将其他不可解析的名称作为参数:
list("this has spaces" = 99) # works, list(this has spaces=99) fails
正如其他人所提到的,如果您查看您创建的命名向量颜色
,您将看到它没有评估第一个物种
,它只是将其指定为名称
first_species <- 'setosa'
colours <- c(first_species = 'black',
'versicolor' = 'cadetblue',
'virginica' = 'hotpink')
colours
# first_species versicolor virginica
# "black" "cadetblue" "hotpink"
现在,您将获得所需的绘图:
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)
在第一个示例中,在颜色之后,如果您想要一行代码来设置名称,而不是使用两行名称
,您可以使用设置名称
,这是一个方便的功能。好的,这是有意义的。确认:命名向量中的名称与字符不同?我想我的混淆部分在于是。字符(名称(颜色))
是真的。但是我假设names函数可以转换为字符。啊,我不知道你可以这样做:c(is=4,a=5,thing=8)
。我想我认为c()
的工作方式与采用命名参数的其他函数不同。好吧,这是有道理的!
colours <- setNames(c("black", "cadetblue", "hotpink" ),
c(first_species, "versicolor", "virginica"))
colours
# setosa versicolor virginica
# "black" "cadetblue" "hotpink"
ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point() +
scale_colour_manual(values = colours)