条形图叠加几何线

Barplot overlay with geom line

这里是数据示例:

S   P   C   P_int C_int
10  20  164 72    64 
20  550 709 92    89 
30  142 192 97    96 
40  45  61  99    98 
50  12  20  99    99 
60  5   6   99    99 
70  2   2   99    99 
80  4   1   99    99 
90  1   0   10    99 
100 0   1   10    99

假设我有一个名为 df 的数据框,目的是使用变量 P 和 C 制作条形图,并使用变量 P_int 和 C_int 的总和覆盖折线图。目前我有这些代码行来创建条形图:

final <- df %>% tidyr::gather(type, value, c(`P`, `C`))
ggplot(final, aes(S))+
  geom_bar(aes(y=value, fill=type), stat="identity", position="dodge")

我想不通的是,将变量 P_int 和 C_int 的总和绘制为折线图,用第二个 Y 轴覆盖在上面的图上。非常感谢任何帮助。

你需要这样的东西吗?

library(ggplot2)
library(dplyr)

ggplot(final, aes(S))+
  geom_bar(aes(y=value, fill=type), stat="identity", position="dodge") + 
  geom_line(data = final %>% 
                    group_by(S) %>% 
                    summarise(total = sum(P_int + C_int)), 
            aes(y = total), color = 'blue') +
  scale_y_continuous(sec.axis = sec_axis(~./1)) +
  theme_classic()

我一直保持次要 y 轴的比例与主要 y 轴相同,因为它们在同一范围内,但您可能需要根据您的实际数据进行调整。