【问题标题】:My period `.` will pipe a data frame with dplyr but not ggplot我的时期`.`将使用dplyr而不是ggplot管道数据框
【发布时间】:2019-04-14 17:17:57
【问题描述】:

请原谅我(可能)不正确的术语,但我会尽力而为:

library(tidyverse)
mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  mutate(cyl = factor(cyl, levels = .$cyl)) %>%  # line 5
  ggplot(aes(cyl, n)) + 
  scale_x_continuous(expand = c(0, 0), limits = c(0, max(.$n) * 1.1)) + 
  geom_line()

我的第 5 行将通过我使用 .$n 的语法正确地管道当前数据帧。但是第 7 行不会使用.$cyl

我得到一个错误 "object '.'未找到”。我通过一些搜索尝试了这个包装器{max(.$n)},但这似乎不起作用。

【问题讨论】:

  • 如果你只是做max(cyl). 有必要吗?
  • @NelsonGon 如果我尝试 max(cyl) 我会收到此错误 "Continuous_scale 中的错误(c("x", "xmin", "xmax", "xend", "xintercept", :找不到对象'cyl'”.
  • 必须通过ggplotGrob
  • cyl 也是一个因素。也许你需要scale_x_discrete

标签: r ggplot2 dplyr


【解决方案1】:

这对我有用:

     mtcars %>% 
          count(cyl) %>% 
          ungroup() %>% 
          mutate(cyl = factor(cyl, levels = .$cyl)) %>%  # line 5
          {
           ggplot(., aes(x = cyl, y = n, group = 1)) + 
            scale_y_continuous(expand = c(0, 0), limits = c(0, max(.$n) * 1.1)) + 
            geom_line()
          }

【讨论】:

  • 有人(可能是 Pablo 吗?)能否提供一点解释,说明为什么需要 {} 包装器,以及这些 {} 正在做什么?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2016-01-24
  • 2021-07-13
  • 1970-01-01
  • 2020-09-09
相关资源
最近更新 更多