如何具有第二个y轴并在其中嵌入折线图

蒂姆·威尔考克斯

首先是示例代码和我正在使用的操作。

   library(tidyverse)
   library(scales)
   Month1 <- c(201812,20191,20192,20193,20194,20195,20196,
        20197,20198,20199,201910,201911,201912,20201
        ,20202,20203,20204,20205,20206,20207
        ,20208,20209,202010,202011)
   annualjobgrowth<- c(44400,46000,42600,40500,42800,40500,36000,
                34000,32300,29900,21900,24500,21000,
                23300,16000,-6200,-275600,-249500,-149200,
                -136500,-129900,-122800,-113900,-109500)
    Rate <- 
   c(3.3,3.4,3.1,3.0,3.1,2.9,2.6,2.5,2.3,2.1,1.6,1.7,1.5,1.7,1.1,-0.4,
    -19.5,-17.6,-10.5,-9.6,-9.1,-8.6,-8.0,-7.7)
   cesyoy <- data.frame(Month1,annualjobgrowth, Rate)

   secondces<-cesyoy %>% mutate(year = substr(as.character(Month1),1,4),
                         month = substr(as.character(Month1),5,7),
                         date = as.Date(paste(year,month,"1",sep ="-"))) %>%
   ggplot() + geom_col(aes(x = date, y = annualjobgrowth),fill = "#00abff")+
   geom_line(aes(x=date, y=Rate),stat="identity")+
   scale_y_continuous(labels=comma,breaks=c(50000,0,-50000,-100000,-150000,-200000,-250000))+
   scale_x_date(date_breaks="1 month", date_labels="%b\n")+
   theme(axis.text.x = element_text(angle = 90, size=rel(0.5))) +
   scale_fill_brewer(palette="Dark2")

我已经阅读了其他问题,并且似乎还会添加类似的内容。

scale_y_continuous(sec.axis = sec_axis(~./max(df$Rate)))

我的问题是如何将其与现有代码混合。最终结果将是我现有的条形图,其中一条线代表Rate变量。如何添加第二个scale_y_continuous项目?

伊恩·坎贝尔

一种方法是预先计算主轴和副轴的最大值之间的比率。然后,您可以按该比例缩放两者。

Ratio <- max(cesyoy$annualjobgrowth)/max(cesyoy$Rate)

cesyoy %>% 
  mutate(year = substr(as.character(Month1),1,4),
         month = substr(as.character(Month1),5,7),
         date = as.Date(paste(year,month,"1",sep ="-"))) %>%
ggplot() + 
  geom_col(aes(x = date, y = annualjobgrowth), fill = "#00abff")+
  geom_line(aes(x=date, y=Ratio*Rate),stat="identity")+
  scale_y_continuous(labels=scales::comma,breaks=c(50000,0,-50000,-100000,-150000,-200000,-250000), name = "Growth",
                     sec.axis = sec_axis(~./Ratio, name = "Rate"))+
  scale_x_date(date_breaks="1 month", date_labels="%b\n")+
  theme(axis.text.x = element_text(angle = 90, size=rel(0.5))) +
  scale_fill_brewer(palette="Dark2") 

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

第二个Y轴时间序列Seaborn

R绘图图中的第二个Y轴

QCharts在右侧的第二个Y轴

在ggplotly上添加第二个Y轴

R-在同一图表上创建条形和折线,如何添加第二个y轴

如何确定第二个y轴上的音量范围

具有两个y轴的混合图(线/条)不会在第二个轴上显示数据

Highchart折线图–具有多轴的数据系列-位于X轴中间的第二系列

具有双Y轴但具有3个或更多时间序列的Google折线图

如何在具有多个y轴的多折线图上绘制数据点

Chart.js两个y轴折线图工具提示值不适用于第二个y轴

如何在Google表格中添加第二个y轴

在R中添加第二个y轴

如何使用facet_grid在secong图中插入第二个y轴

向ggplot添加第二个y轴

如何在R中的折线图中添加第二个x轴

如何使用ggplot在第二个y轴上写单词列表?

如何使第二个python x轴具有非有序值?

如何在nvd3折线图中隐藏第二个轴

具有3个TextViews的水平LinearLayout,其中第二个必须保持居中

第二个y刻度重复轴刻度

Matplotlib.pyplot:如何为现有绘图设置第二个y轴

添加第二个y轴而没有相应的x数据

Highcharts 中的多个系列数据但第二个折线图显示为压扁?

如何为具有多个 y 轴的多折线图中的每条线分配特定 id

如何在charts.js中显示第二个y轴的标签?

如何在 X 轴和 Y 轴上绘制具有多个变量的折线图

如何在matplotlib中制作具有不同y轴的堆叠折线图?

如何为数据中的一个类别绘制第二个 y 轴?