gpt4 book ai didi

r - 有人可以在手动 ggplot 比例尺中解释命名向量的行为吗?

转载 作者:行者123 更新时间:2023-12-05 02:20:04 37 4
gpt4 key购买 nike

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

Missing a colour

但是,如果我使用名称创建命名向量,则绘图会按预期显示:

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)

Correct plot

任何人都可以向我解释这种行为吗?我怀疑它与非标准评估有关(ggplot2 使用的是名称而不是值?)。

建议在手动比例设置函数中使用变量的最佳方式,将不胜感激!

最佳答案

当你做类似的事情时:

c(n=1)

就像做:

runif(n=10)

n 在这里是一个名字,并没有像变量一样被评估。它是一个命名参数。您可以引用像 runif("n"=10) 这样的名称是解析器的一项功能,它允许您将其他无法解析的名称作为参数:

list("this has spaces" = 99) # works, list(this has spaces=99) fails

关于r - 有人可以在手动 ggplot 比例尺中解释命名向量的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40426663/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com