相关疑难解决方法(0)

如何访问已传递给ggplot()的数据框?

我想将字符串设置N=xxx为我的图的标题,其中xxx是我作为data参数传递的数据框中的观察数ggplot().在我当前的代码中,我第二次显式传递该数据帧作为sprintf()我在其中使用的参数labs():

ggplot(mtcars, aes(mpg, hp)) + 
    labs(title=sprintf("N=%i", nrow(mtcars))) + 
    geom_point()
Run Code Online (Sandbox Code Playgroud)

这确实产生了所需的标题,但它不适用于更复杂的任务:我使用dplyr管道来构建正在绘制的数据框,因为这是一个耗时的过程,我不想重复管道第二次获取行数,如示例中所示.

那么,如何ggplot()从用于修改绘图的函数的参数规范中访问作为参数传递的数据框?

r ggplot2 magrittr

13
推荐指数
2
解决办法
1032
查看次数

在ggtitle中访问图的数据

我想知道是否可以通过某种方式访问ggplot2标题图中提供的数据的列。所以像这样:

ggplot(mpg %>% filter(manufacturer == 'audi'), 
  aes(x = hwy, y = displ, label = model)) + 
    geom_point() + 
    geom_text(data = . %>% filter(hwy > 28)) + 
    ggtitle(unique(.$manufacurer))
Run Code Online (Sandbox Code Playgroud)

我经常像上面的示例中那样创建图以仅绘制子集,并且希望为该子集自动标注。目前,.不会在内识别出,ggtitle而是在geom_text其中起作用。

编辑:
由于我得到了一个很好的注释,并从@Brian标记为重复项,是否有解决方案可以{}dplyr::group_by函数中使用此技巧?这不起作用。我很乐意为每个组创建单独的图,但是不知何故,只有完整的数据框可以ggplot调用。

mpg %>%
  group_by(manufacturer) %>% {
    ggplot(., aes(cyl, displ, color=manufacturer)) +
      geom_point() + 
      ggtitle(unique(.$manufacturer))
  }
Run Code Online (Sandbox Code Playgroud)

它说奥迪,但在单个图中打印所有制造商。

r ggplot2 ggtitle

5
推荐指数
1
解决办法
684
查看次数

标签 统计

ggplot2 ×2

r ×2

ggtitle ×1

magrittr ×1