R可視化——ggplot2中組合圖的繪制(主圖中插入小圖)
? ???安裝、加載包
rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\繪圖技巧')#設置工作路徑
#安裝包
# install.packages("ggplot2")
# install.packages("ggprism")
# install.packages("ggpubr")
#加載包
library(ggplot2)
library(ggprism)
library(ggpubr)
加載數據
#加載數據(以R自帶數據mtcars為例)
data(mtcars)
df <- mtcars[, c("mpg","cyl","wt")]
#將cyl轉換為因子型
df$cyl <- as.factor(df$cyl)
繪制小圖
#小圖繪制箱線圖
p1 <- ggplot(df,aes(x=cyl,y=wt))+#指定數據
?stat_boxplot(geom = "errorbar", width=0.1,size=0.8)+#添加誤差線,注意位置,放到最后則這條先不會被箱體覆蓋
?geom_boxplot(aes(fill=cyl), #繪制箱線圖函數
? ? ? ? ? ? ? outlier.colour="white",size=0.8)+#異常點去除
?geom_jitter(width = 0.2)+#添加抖動點
?geom_signif(comparisons = list(c("4","6"),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c("6","8"),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c("4","8")),# 設置需要比較的組
? ? ? ? ? ? ?map_signif_level = T, #是否使用星號顯示
? ? ? ? ? ? ?test = t.test, ##計算方法
? ? ? ? ? ? ?y_position = c(5,5.5,6),#圖中橫線位置設置
? ? ? ? ? ? ?tip_length = c(c(0.01,0.01),
? ? ? ? ? ? ? ? ? ? ? ? ? ? c(0.01,0.01),
? ? ? ? ? ? ? ? ? ? ? ? ? ? c(0.01,0.01)),#橫線下方的豎線設置
? ? ? ? ? ? ?size=0.8,color="black")+
?theme_prism(palette = "candy_bright",
? ? ? ? ? ? ?base_fontface = "plain", # 字體樣式,可選 bold, plain, italic
? ? ? ? ? ? ?base_family = "serif", # 字體格式,可選 serif, sans, mono, Arial等
? ? ? ? ? ? ?base_size = 16, ?# 圖形的字體大小
? ? ? ? ? ? ?base_line_size = 0.8, # 坐標軸的粗細
? ? ? ? ? ? ?axis_text_angle = 45)+ # 可選值有 0,45,90,270
?scale_fill_prism(palette = "candy_bright")+
?theme(panel.background =element_blank(), #背景
? ? ? ?axis.line=element_line(),#坐標軸的線設為顯示
? ? ? ?plot.title = element_text(size=14))#圖例位置
p1

主圖繪制
p2 <- ggplot(df,aes(mpg,wt))+
?geom_point(shape=21,color=df$cyl,fill=df$cyl)+
?geom_smooth(method="lm",
? ? ? ? ? ? ?color="#034C76",fill="grey",size=1)+#添加擬合線
?theme_prism(palette = "flames",
? ? ? ? ? ? ?base_fontface = "plain",
? ? ? ? ? ? ?base_family = "serif",
? ? ? ? ? ? ?base_size = 16,
? ? ? ? ? ? ?base_line_size = 0.8,
? ? ? ? ? ? ?axis_text_angle = 45)+
?scale_fill_prism(palette = "candy_bright")+#填充色
?labs(title = "散點圖", # 定義主標題
? ? ? subtitle = "XXXXXXX", # 定義子標題
? ? ? x = "XXXXX", # 定義x軸文本
? ? ? y = "XXXXX")# 定義y軸文本
p2

組合圖繪制
#通過ggplot2包的函數annotation_custom()將箱線圖作為小圖插入到主圖中
p2 + annotation_custom(grob=ggplotGrob(p1),ymin = 3.2, ymax = 5.8, xmin=22, xmax=35)

標簽: