繁体   English   中英

将 geom_bar 与 geom_line 结合在一个 plot

[英]Combining geom_bar with geom_line in one plot

我试图将 2 个地块合并为 1 个 plot。 但是 geom_line 没有出现,并且右边的 y 轴不在 % 中。

geom_bar 显示了我想要的,但 geom_line 没有出现在 ggplot 中。 geom_line 是一个 %,表示 BV 和 FV 之间的关系,% = BG/FV。

我的表在 Excel 中的样子。

欧洲人的逗号:

阿尔 类型 mia_kr BG
2004年 FV 1918050 0,489221
2004年 BG 938350,0583
2005年 FV 2312210 0,447918
2005年 BG 1035680,125
2006年 FV 2842071 0,416046
2006年 BG 1182431,742
2007年 FV 2910107 0,447245
2007年 BG 1301530,525

所有不使用逗号的人:

阿尔 类型 mia_kr BG
2004年 FV 1918050 0.489221
2004年 BG 938350.0583
2005年 FV 2312210 0.447918
2005年 BG 1035680.125
2006年 FV 2842071 0.416046
2006年 BG 1182431.742
2007年 FV 2910107 0.447245
2007年 BG 1301530.525

我的代码:

    library(ggplot2)
SAMLET <- data.frame(Aar=c(2004, 2004, 2005, 2005, 2006, 2006, 2007, 2007),
                  Type=c(FV, BG, FV, BG,FV, BG,FV, BG,),
                  mia_kr=c(1918050,938350.0583, 2312210, 1035680.125, 2842071, 1182431.742, 2910107, 1301530.525))
SAMLET_2 <- data.frame(Aar=c(2004, 2005, 2006, 2007,),
BG=c(0.489221, ,0.447918, ,0.416046, , 0.447245, ))



ggplot() + 
  geom_bar(mapping = aes(x= SAMLET$Aar, y= SAMLET$mia_kr, fill = SAMLET$Type), stat="identity",position = "identity")+
  geom_line(mapping = aes(x= SAMLET_2$Aar, y = SAMLET_2$BG),size = 2, color = "blue") +
  scale_y_continuous(labels = scales::format_format(big.mark = ".", decimal.mark = ",", scientific = FALSE),
                     sec.axis = sec_axis(~ ./4,labels = scales::format_format(big.mark = ".", decimal.mark = ",", scientific = FALSE) ))

显示带有 2 个 y 轴的条形图

它应该是什么样子

你可以试试

ggplot(df, aes(x = Aar)) + 
   geom_col(aes(y = mia_kr, fill = Type)) + 
   geom_line(aes(y = BG*max(mia_kr), group =Type))  +
   scale_y_continuous(labels = scales::format_format(big.mark = ".", decimal.mark = ",", scientific = FALSE),
                     sec.axis = sec_axis(~ ./max(df$mia_kr)))

在此处输入图像描述

请注意,线值会根据最大mia_kr值进行放大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM