在 ggplot 中使用参数占位符
Use argument place holder within ggplot
我正在尝试在 ggplot()
中使用参数占位符 .
。但由于某些我不完全确定的原因,它不起作用。
我正在做的是这个(使用来自 ggplot2
/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 = . %$% 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))
但是,它不适用于参数占位符 .
。我应该怎么做?
此外,如果有可能不必再次将 pop
和 unemploy
作为单独的参数列在 corr_eqn
fn 中,这也很棒。
问题是 annotate
不在管道内,所以 .
在那里没有意义。 ggplot 中的 +
运算符与 magrittr 中的 %>%
没有相同的功能;在您的代码中,管道实际上在调用 ggplot()
时停止。 +
运算符将允许下一个函数将各种元素添加到绘图中,但它通常不允许您以您希望的方式访问提供给 ggplot()
调用的数据%>%
运算符。
另一方面,如果您使用 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)
我正在尝试在 ggplot()
中使用参数占位符 .
。但由于某些我不完全确定的原因,它不起作用。
我正在做的是这个(使用来自 ggplot2
/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 = . %$% 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))
但是,它不适用于参数占位符 .
。我应该怎么做?
此外,如果有可能不必再次将 pop
和 unemploy
作为单独的参数列在 corr_eqn
fn 中,这也很棒。
问题是 annotate
不在管道内,所以 .
在那里没有意义。 ggplot 中的 +
运算符与 magrittr 中的 %>%
没有相同的功能;在您的代码中,管道实际上在调用 ggplot()
时停止。 +
运算符将允许下一个函数将各种元素添加到绘图中,但它通常不允许您以您希望的方式访问提供给 ggplot()
调用的数据%>%
运算符。
另一方面,如果您使用 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)