【问题标题】:Adjusting Dual Axis Chart with ggplot (R)使用 ggplot (R) 调整双轴图表
【发布时间】:2021-12-26 14:17:25
【问题描述】:

我想可视化每个产品类别的销售量(下表中的第 2 列)并添加代表市场份额百分比的行(第 3 列) Table 我使用 sec_axis 函数来调整第二个轴刻度,但似乎数据不想与之连接,它仍然在第一个轴刻度上运行。

       tabela %>% ggplot() +
      geom_col(aes(x =`Przedział Cenowy`,  y = `Sprzedaz przypadająca na jeden tytuł `), 
fill = "blue", alpha = .4)+
      geom_point(aes(x =`Przedział Cenowy`, y = `Liczba Sprzedanych Kopii / Całkowitą sprzedaż [%]`), color= "red") +
      geom_line(aes(x =`Przedział Cenowy`, y = `Liczba Sprzedanych Kopii / Całkowitą sprzedaż [%]`), color= "red") +
      scale_y_continuous(sec.axis = sec_axis(~./2800, name = "Procent"))

运行代码根据需要使用正确的单位添加第二个轴,这些单位应该允许可视化市场份额百分比,但点和线看起来仍然在第一个轴上运行。 Chart result 当我更改ylim=c(0,150) 时,它看起来像这样 changed ylim

所以对我来说,点和线显然仍在第一个而不是第二个轴上运行。我该如何解决?

【问题讨论】:

  • 欢迎来到 StackOverflow。感谢您清楚地提出您的问题并分享您的代码。但是,将来请do not use images of code/data。而是以可复制粘贴的格式导出数据,例如使用dput(tabela)。另请参阅this,了解在您的问题中分享优秀示例的提示。

标签: r ggplot2 dplyr


【解决方案1】:

您需要通过用于创建该轴的缩放因子的倒数来缩放应该出现在sec_axis 上的数据。所以你的代码应该是:


tabela %>% 
   ggplot() +
   geom_col(aes(x =`Przedział Cenowy`,  
                y = `Sprzedaz przypadająca na jeden tytuł `), 
            fill = "blue", 
            alpha = .4)+
   geom_point(aes(x =`Przedział Cenowy`, 
                  y = 2800*(`Liczba Sprzedanych Kopii / Całkowitą sprzedaż [%]`)), 
              color= "red") +
   geom_line(aes(x =`Przedział Cenowy`, 
                  y = 2800*(`Liczba Sprzedanych Kopii / Całkowitą sprzedaż [%]`)), 
              color= "red") +
      scale_y_continuous(sec.axis = sec_axis(~./2800, name = "Procent"))

【讨论】:

  • 这行得通。我认为数据会自动从第二个轴读取值。谢谢!
  • 如果这解决了您的问题,请accept the answer。您需要手动缩放 sec_axis 和随之而来的数据,因为 {ggplot2} 仅在引擎盖下的单个比例上运行。
猜你喜欢
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2023-03-14
  • 2016-04-16
  • 1970-01-01
相关资源
最近更新 更多