如何在 R 中的折线图中添加第二个 x 轴
how to add a second x-axis to a line chart in R
首先是数据和操作。我将如何为此添加第二个 y 轴。 desired 将在第一个值 (Dec) 下有 2018 年,在下一个 12 下有 2019 年,然后在下一个 11 下有 2020 年。这是我要使用注释的地方吗?此外,年份将是水平的,并在一年的第一个月(或 2018 年的 dec)正下方左对齐
我看过其他类似的问题,但答案中有诸如 xlim 之类的不需要的项目,因为数据集中只有 24 个项目。
#Data generation
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)
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,Rate)
#Chart
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
library(odbc)
## chart
linechart<-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_line(aes(x=date,y=Rate),color="red")+scale_y_continuous(labels =
scales::percent)+scale_x_date(date_breaks="1 month", date_labels="%b\n")+theme(panel.grid.major
= element_blank(),axis.text.x = element_text(angle = 90, size=rel(0.6)))+ggtitle("Employment
Growth (%)")
print(linechart)
试试这个:
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
## chart
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_line(aes(x=date,y=Rate),color="red")+
scale_y_continuous(labels =scales::percent)+
scale_x_date(date_breaks="1 month", date_labels="%b\n",
sec.axis = dup_axis(labels = function(x) format(x,'%Y')))+
theme(panel.grid.major= element_blank(),
axis.text.x = element_text(angle = 90, size=rel(0.6)))+ggtitle("Employment
Growth (%)")
输出:
另一个选项:
#Code2
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_line(aes(x=date,y=Rate),color="red")+
scale_y_continuous(labels =scales::percent)+
scale_x_date(date_breaks="1 month", date_labels="%b\n",
expand = c(0, 0))+
facet_wrap(.~year,scales = 'free_x',strip.position = 'bottom')+
theme(panel.grid.major= element_blank(),
axis.text.x = element_text(angle = 90, size=rel(0.6)),
panel.spacing = unit(0, "lines"),
strip.placement = 'outside',
strip.background = element_blank())+
ggtitle("Employment
Growth (%)")
输出:
首先是数据和操作。我将如何为此添加第二个 y 轴。 desired 将在第一个值 (Dec) 下有 2018 年,在下一个 12 下有 2019 年,然后在下一个 11 下有 2020 年。这是我要使用注释的地方吗?此外,年份将是水平的,并在一年的第一个月(或 2018 年的 dec)正下方左对齐
我看过其他类似的问题,但答案中有诸如 xlim 之类的不需要的项目,因为数据集中只有 24 个项目。
#Data generation
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)
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,Rate)
#Chart
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
library(odbc)
## chart
linechart<-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_line(aes(x=date,y=Rate),color="red")+scale_y_continuous(labels =
scales::percent)+scale_x_date(date_breaks="1 month", date_labels="%b\n")+theme(panel.grid.major
= element_blank(),axis.text.x = element_text(angle = 90, size=rel(0.6)))+ggtitle("Employment
Growth (%)")
print(linechart)
试试这个:
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
## chart
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_line(aes(x=date,y=Rate),color="red")+
scale_y_continuous(labels =scales::percent)+
scale_x_date(date_breaks="1 month", date_labels="%b\n",
sec.axis = dup_axis(labels = function(x) format(x,'%Y')))+
theme(panel.grid.major= element_blank(),
axis.text.x = element_text(angle = 90, size=rel(0.6)))+ggtitle("Employment
Growth (%)")
输出:
另一个选项:
#Code2
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_line(aes(x=date,y=Rate),color="red")+
scale_y_continuous(labels =scales::percent)+
scale_x_date(date_breaks="1 month", date_labels="%b\n",
expand = c(0, 0))+
facet_wrap(.~year,scales = 'free_x',strip.position = 'bottom')+
theme(panel.grid.major= element_blank(),
axis.text.x = element_text(angle = 90, size=rel(0.6)),
panel.spacing = unit(0, "lines"),
strip.placement = 'outside',
strip.background = element_blank())+
ggtitle("Employment
Growth (%)")
输出: