gpt4 book ai didi

r - 在 ggplot 中使用参数占位符

转载 作者:行者123 更新时间:2023-12-03 23:47:14 25 4
gpt4 key购买 nike

我正在尝试使用参数占位符 .ggplot() 内.但由于某种我不完全确定的原因,它不起作用。

我正在做的是这个(使用来自 ggplot2/the tidyverse 的样本数据):

library(tidyverse)
library(magrittr)

corr_eqn <- function(x, y, digits = 2) {
corr_coef <-
round(cor(x, y, use = "pairwise.complete.obs"), digits = digits)
paste("r = ", corr_coef)
}


economics %>%
filter(date >= "1990-11-01") %>%
ggplot(aes(pop, unemploy)) +
geom_point()+
annotate(geom = "text", x=-Inf, y=Inf, hjust=0, vjust=1,
label = economics[economics$date>="1990-11-01",] %$% corr_eqn(pop, unemploy))

但是,我想将 label 后面的命令减少到 label = . %$% corr_eqn(pop, unemploy) . IE。我不想打电话 economics[economics$date>="1990-11-01",]再次因为我已经过滤了这个:
economics %>%
filter(date >= "1990-11-01") %>%
ggplot(aes(pop, unemploy)) +
geom_point()+
annotate(geom = "text", x=-Inf, y=Inf, hjust=0, vjust=1,
label = . %$% corr_eqn(pop, unemploy))

但是,它不适用于参数占位符 . .我应该怎么做?

另外,如果有可能 nat 必须列出 popunemploy作为 corr_eqn 中的单独参数fn 再次,这也将是惊人的。

最佳答案

问题是 annotate不在管道内,所以 .那里没有任何意义。 + ggplot 中的运算符与 %>% 的功能不同在马格利特;在您的代码中,管道在调用 ggplot() 时有效地停止。 . +运算符将允许下一个函数将各种元素添加到绘图中,但通常不允许您访问提供给 ggplot() 的数据。以您使用 %>% 的方式调用电话运算符(operator)。

另一方面,如果您使用 geom_text而不是 annotate ,这些问题消失了,因为您正在直接访问子集数据中的变量:

economics %>%
filter(date >= "1990-11-01") %>%
ggplot(aes(pop, unemploy)) +
geom_point() +
geom_text(aes(x = min(pop), y = max(unemploy), label = corr_eqn(pop, unemploy)),
hjust = 0, vjust = 1, size = 6)

enter image description here

关于r - 在 ggplot 中使用参数占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61931500/

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