从数据集本身向 ggplot 添加标题

Adding Title to ggplot from the dataset itself

我正在使用 R 编程语言。我使用 built-in“mtcars”数据集制作了下图:

library(ggplot2)
a = ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("mtcars: wt vs mpg")

问题:现在,我正在尝试自定义标题,但我希望标题“包含变量引用”,例如:

b = ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("mtcars: wt vs mpg - average mpg = mean(mtcars$mpg)")

但是这个命令实际上只是打印我写的代码:

我知道“mean”命令会自动运行:

 mean(mtcars$mpg)
[1] 20.09062

但是有人可以帮我更改此代码吗:

ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("mtcars: wt vs mpg - average mpg = mean(mtcars$mpg)")

这样就产生了这样的东西(注意:这里是我手写的“意思”):

谢谢

您可以使用 paste() 执行此操作。

ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle(paste0("mtcars: wt vs mpg - average mpg = ", mean(mtcars$mpg)))

如果需要,您可以使用逗号添加更多文本和变量,如下所示:

ggtitle(paste0('text ', var1, 'text2 etc ', var2, var3, 'text3'))

请注意,paste0paste 的一种变体,它连接的内容之间没有 space 或分隔符。

我们还可以使用 stringr 包中的 str_c,它是 tidyverse 包的一部分。 str_c 等同于 paste0

library(tidyverse)

ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle(str_c("mtcars: wt vs mpg - average mpg = ", mean(mtcars$mpg)))

选项glue

library(ggplot2)
library(glue)
ggplot(mtcars, aes(x = wt, y = mpg)) +
      geom_point() + 
      ggtitle(glue("mtcars: wt vs mpg - average mpg = {mean(mtcars$mpg)}"))