条形图叠加几何线
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 轴相同,因为它们在同一范围内,但您可能需要根据您的实际数据进行调整。
这里是数据示例:
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 轴相同,因为它们在同一范围内,但您可能需要根据您的实际数据进行调整。