gpt4 book ai didi

r - 如何组合 aes() 和 aes_string() 选项

转载 作者:行者123 更新时间:2023-12-03 15:13:14 27 4
gpt4 key购买 nike

假设我有这样的情节

library(ggplot2)
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes(y=mpg, color="one")) +
geom_line(aes(y=qsec, color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))

enter image description here

我正在绘制两条线并为每条线指定一个颜色组。现在假设我想将变量名称动态指定为字符值,这意味着我需要使用 aes_string().如果我尝试
v1<-"mpg"
v2<-"qsec"
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes_string(y=v1, color="one")) +
geom_line(aes_string(y=v2, color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))

我得到错误
Error in eval(expr, envir, enclos) : object 'one' not found

因为现在 aes_string()当我只想要一个文字字符值时,试图解析颜色值。如果我尝试
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes_string(y=v1), aes(color="one")) +
geom_line(aes_string(y=v2), aes(color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))

我明白了
Error: ggplot2 doesn't know how to deal with data of class uneval

大概是因为该层不知道如何处理两个美学指令。

我怎样才能结合 aes()aes_string()美学或如何为 aes_string() 指定文字字符值?

最佳答案

ggplot2 V3.0.0它变得非常简单:

v1<-"mpg"
v2<-"qsec"
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes(y=!!sym(v1), color="one")) +
geom_line(aes(y=!!sym(v2), color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))

关于r - 如何组合 aes() 和 aes_string() 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28777626/

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