查看原文
其他

R可视化——ggplot2如何实现同一类型图共用同一X轴?

王志山 科研后花园 2023-09-08
 

点击上方

“蓝色字”

关注我们

第一种方式

主要通过拼图方式实现,将所有图形按照同一列进行排列,而且在绘图过程中需要去除上面几幅图的x轴刻度、标签及横线,具体代码如下:

rm(list=ls())#设置工作环境setwd("D:\\桌面")
#安装包# install.packages("ggplot2")# install.packages("ggprism")#加载包library(ggplot2)library(ggprism)#加载数据df <- read.table(file="data.txt",sep="\t",header=T,check.names=FALSE)
#############第一种方式#########Janp1<-ggplot(df)+ geom_line(aes(date, Jan),size=0.8,color="red")+ theme_prism(palette = "candy_soft",#主题设置 base_fontface = "plain", base_family = "serif", base_size = 16, base_line_size = 0.8, axis_text_angle = 45)+ scale_x_continuous(breaks=seq(1,31, 3))+#设置X轴标签范围及间隔 theme(axis.ticks.x = element_blank(),#去除x轴刻度 axis.text.x = element_blank(),#去除x轴标签 axis.line.x = element_blank())+#去除x轴横线 labs(title = "Jan", # 定义主标题 x = NULL, # 定义x轴文本 y = "Value")# 定义y轴文本#Febp2<-ggplot(df)+ geom_line(aes(date, Feb),size=0.8,color="green")+ theme_prism(palette = "candy_soft",#主题设置 base_fontface = "plain", base_family = "serif", base_size = 16, base_line_size = 0.8, axis_text_angle = 45)+ scale_x_continuous(breaks=seq(1,31, 3))+#设置X轴标签范围及间隔 theme(axis.ticks.x = element_blank(), axis.text.x = element_blank(), axis.line.x = element_blank())+ labs(title = "Feb", # 定义主标题 x = NULL, # 定义x轴文本 y = "Value")# 定义y轴文本#Marp3<-ggplot(df)+ geom_line(aes(date, Mar),size=0.8,color="blue")+ theme_prism(palette = "candy_soft",#主题设置 base_fontface = "plain", base_family = "serif", base_size = 16, base_line_size = 0.8, axis_text_angle = 45)+ scale_x_continuous(breaks=seq(1,31, 3))+#设置X轴标签范围及间隔 theme(axis.ticks.x = element_blank(), axis.text.x = element_blank(), axis.line.x = element_blank())+ labs(title = "Mar", # 定义主标题 x = NULL, # 定义x轴文本 y = "Value")# 定义y轴文本#Aprp4<-ggplot(df)+ geom_line(aes(date, Apr),size=0.8,color="yellow")+ theme_prism(palette = "candy_soft",#主题设置 base_fontface = "plain", base_family = "serif", base_size = 16, base_line_size = 0.8, axis_text_angle = 45)+ scale_x_continuous(breaks=seq(1,31, 3))+#设置X轴标签范围及间隔 labs(title = "Apr", # 定义主标题 x = 'Date', # 定义x轴文本 y = "Value")# 定义y轴文本
#拼图library(cowplot)plot_grid(p1,p2,p3,p4,ncol=1)

第二种方式

主要通过ggplot2包中的分面函数facet_wrap()进行绘制,代码如下:

##########第二种方式###########library(reshape2)library(tidyverse)#处理数据data <- df %>% melt(df,id.vars = c("date"), measure.vars = c('Jan','Feb','Mar','Apr'), variable.name = c('Mon'), value.name = 'value')#绘图ggplot(data,aes(date, value,color=Mon))+ geom_line(size=0.8)+ facet_wrap(~Mon,nrow = 4)+#按照单一变量进行分面 theme_prism(palette = "candy_soft",#主题设置 base_fontface = "plain", base_family = "serif", base_size = 16, base_line_size = 0.8, axis_text_angle = 45)+ scale_x_continuous(breaks=seq(1,31, 3))+#设置X轴标签范围及间隔 labs(title = "Run chart", # 定义主标题 x = 'Date', # 定义x轴文本 y = "Value")# 定义y轴文本

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存