【问题标题】:Second Y-Axis in ggplot (R) [duplicate]ggplot(R)中的第二个Y轴[重复]
【发布时间】:2018-06-07 15:20:30
【问题描述】:

我正在尝试在 R 的 Shiny 应用程序中使用 ggplot 绘制绘图,我需要在其中设置第二个 Y 轴。该图有两种类型的图形:线条和条形。我想在左侧表示条形(降水深度),在右侧表示线(流)。

我当前的代码是:

output$plotRout <- renderPlot({                                     
    ggplot(totalRR(),aes(x=time)) +
      geom_bar(aes(y=mm), stat = "identity",fill = "dodgerblue",color = "black") +
      geom_bar(aes(y=NetRain), stat = "identity",fill = "Cyan",color = "black") +
      geom_line(aes(y=DirRun, colour = "Direct Runoff"), stat = "identity",color = "Red") +
      geom_line(aes(y=BF, colour = "Baseflow"), stat = "identity",color = "Darkorange", linetype = "longdash") +
      scale_y_continuous("Rainfall (mm)", sec.axis = sec_axis(~.*10, name = "Flow (m3/s)")) +
      xlab("Time (h)")
  })

The result is:

此图的左侧是流量值,右侧是应显示的值,而降雨量值(条形图)未显示在图上。

如何制作此图,将条形(降雨)的值放在左侧,将第二个 y 轴放在右侧,显示线条(流)的值?

非常感谢。

维克多

【问题讨论】:

标签: r ggplot2


【解决方案1】:

一种解决方案是将 Flow 轴设为主要 y 轴。这涉及 1) 使用 *10 缩放数据,然后 2) 使用 /10 转换辅助轴以获取正确的降雨轴数字:

ggplot(totalRR(),aes(x=time)) +
    geom_bar(aes(y=10*mm), stat = "identity",fill = "dodgerblue",color = "black") +
    geom_bar(aes(y=10*NetRain), stat = "identity",fill = "Cyan",color = "black") +
    geom_line(aes(y=10*DirRun, colour = "Direct Runoff"), stat = "identity",color = "Red") +
    geom_line(aes(y=10*BF, colour = "Baseflow"), stat = "identity",color = "Darkorange", linetype = "longdash") +
    scale_y_continuous("Flow (m3/s)", sec.axis = sec_axis(~./10, name = "Rainfall (mm)")) +
    xlab("Time (h)")

【讨论】:

  • 非常感谢您的回答。我已经做到了,但结果很奇怪。例如,条形图的最大值(降雨量)为 5.54 毫米,但根据绘图是 0.5....第二个轴很好地用数字表示,但绘图没有任何意义。
  • 您能否提供一个 Tung 在 cmets 中建议的示例数据集?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多