Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有人能解释一下命名向量在手动绘制比例中的行为吗?_R_Ggplot2_Nse - Fatal编程技术网

R 有人能解释一下命名向量在手动绘制比例中的行为吗?

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 =

在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)
库(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)