Problem:

  • 无法解析传递给ggplot 2的DF变量scale_y_continous

Aim:

  • 动态执行具有比例的次轴.

我的解决办法目前是手动编写总和,这不是最好的方法,或者将DF保存在变量中并使用df$count访问它

询问:

  • 如何动态访问DF变量.$count

Reproducable Example:

mtcars %>% 
  group_by(gear) %>% 
  summarise(count = n()) %>% 
  {
  ggplot(data = . , aes(x = gear, y = count)) +
  geom_col() +
  coord_flip() +
  
  scale_y_continuous(labels = comma_format(),
                     sec.axis = sec_axis(~./32, #sum(.$count), 
                                         labels = scales::percent,
                                         name = "proportion")
                     ) 
  }
  

Reference: How do I access the data frame that has been passed to ggplot()?

推荐答案

混淆是因为transformsec_axis()的参数需要:

严格单调变换的公式或函数

您正在使用带有 ~ . / 32的公式符号.这意味着.指的是轴值,它掩盖了.,后者通常指的是您用%>%管道传输的对象.

避免这种情况的最简单方法是使用匿名函数而不是公式符号:

mtcars %>%
    group_by(gear) %>%
    summarise(count = n()) %>%
    {
        ggplot(data = ., aes(x = gear, y = count)) +
            geom_col() +
            coord_flip() +
            scale_y_continuous(
                labels = comma_format(),
                sec.axis = sec_axis(
                    \(x) x / sum(.$count), # this is the only changed line
                    labels = scales::percent,
                    name = "proportion"
                )
            )
    }

enter image description here

R相关问答推荐

NA仅省略具有NA的 Select 行

使用geom_rect的带有事件注释的时间序列图

图片中令人惊讶的行为

R数据帧中的布尔加法会产生布尔值而不是整值

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

单击 map 后,将坐标复制到剪贴板

R创建一个数据透视表,计算多个组的百分比

编辑文件后编辑RhandsonTable

更改编号列表的 colored颜色

整数成随机顺序与约束R?

使用ggsankey调整Sankey图中单个 node 上的标签

如何在geom_col中反转条

如何在一次运行中使用count进行多列计数

当我添加美学时,geom_point未对齐

有没有可能用shiny 的书签恢复手风琴面板?

我如何go 掉盒子图底部的数字?

为什么函数toTitleCase不能处理english(1),而toupper可以?

使用geom_sf跨越日期线时的闭合边界

在ggplot2图表中通过端点连接点

使用同一行中的前一个值填充R矩阵中的缺失值