使用 R 中 Cowplot 包中的 plot_grid() 将 hist() 和 boxplot() 对象转换为 ggplot() 对象以对齐我的图
Converting a hist() and boxplot() object into a ggplot() object to align my plots using plot_grid() in the Cowplot Package in R
我正在检查我的数据是否正常,我已经创建了箱线图 - boxplot()
、直方图 - hist()
和 ggqqplots()
(使用 ggpubr
包,这是与 ggplot
对齐)。数据显示使用 Raven 软件测量的声谱图中的声学参数。
对于这个项目,我需要在视觉上整齐地表示我的结果,我想使用 cowplot
包中的 plot_grid()
将我的图对齐为 9 列和 3 行。我制作了 9 个箱线图、9 个直方图和 9 个 ggqqplot()
个对象。
当我尝试使用 plot_grid()
函数对齐绘图时,打印了 qqggplot() 但 hist() 和 boxplots() 对象没有 (见图 1)。我了解到我需要将 hist()
和 boxplot()
对象转换为 grob 对象。
我找到了一个网站(如下),该网站声明可以使用 as.glob()
或 as.ggplot()
来转换我的图表。我使用了下面这个 link 中的信息,但是没有成功。
Conversion to grob objects
在我尝试使用 as.grob()
函数,我收到错误消息 2(见下文)。
R代码
#Install library packages
library("ggpubr")
library("grid")
library("ggplotify")
library(ggplot2)
library(cowplot)
#Box plots
Low_Freq_Box<-boxplot(main_path$Low.Freq..Hz.)
High_Freq_Box<-boxplot(main_path$High.Freq..Hz.)
Peak_Freq_Box<-boxplot(main_path$Peak.Freq..Hz.)
Delta_Freq_Box<-boxplot(main_path$Delta.Freq..Hz.)
Peak_Time_Box<-boxplot(main_path$ Peak.Time..s.)
Delta_Time_Box<-boxplot(main_path$Delta.Time..s.)
Center_Freq_Box<-boxplot(main_path$Center.Freq..Hz.)
Start_Freq_Box<-boxplot(main_path$Start.Freq..Hz.)
End_Freq_Box<-boxplot(main_path$End.Freq..Hz.)
#Histograms
Low_Freq_hist<-hist(main_path$Low.Freq..Hz.)
High_Freq_hist<-hist(main_path$High.Freq..Hz.)
Peak_Freq_hist<-hist(main_path$Peak.Freq..Hz.)
Delta_Freq_hist<-hist(main_path$Delta.Freq..Hz.)
Peak_Time_hist<-hist(main_path$Peak.Time..s.)
Delta_Time_hist<-hist(main_path$Delta.Time..s.)
Center_Freq_hist<-hist(main_path$Center.Freq..Hz.)
Start_Freq_hist<-hist(main_path$Start.Freq..Hz.)
End_Freq_hist<-hist(main_path$End.Freq..Hz.)
#QQ Plots
Low_Freq_qqplot<-ggqqplot(main_path$Low.Freq..Hz.)
High_Freq_qqplot<-ggqqplot(main_path$High.Freq..Hz.)
Peak_Freq_qqplot<-ggqqplot(main_path$Peak.Freq..Hz.)
Delta_Freq_qqplot<-ggqqplot(main_path$Delta.Freq..Hz.)
Delta_Time_qqplot<-ggqqplot(main_path$Delta.Time..s.)
Peak_Time_qqplot<-ggqqplot(main_path$Peak.Time..s.)
Center_Freq_qqplot<-ggqqplot(main_path$Center.Freq..Hz.)
Start_Freq_qqplot<-ggqqplot(main_path$Start.Freq..Hz.)
End_Freq_qqplot<-ggqqplot(main_path$End.Freq..Hz.)
错误信息 1
#Plot the box plots, histograms, and qqplots on the same grid
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14', 15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
ncol=9, nrow=3)
#Warning Messages
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
+ Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
+ Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
+ labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
+ ncol=9, nrow=3,
+ align="hv",
+ label_size = 12)
There were 20 warnings (use warnings() to see them)
图 1
您是否尝试过使用 gridExtra
包的 grid.arrange()
功能?
有个例子on Cran here
对你来说它看起来像这样
library(gridExtra)
library(grid)
library(ggplot2)
grid.arrange(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot)
答案:
要使用plot_grid()函数将hist()和boxplot()等基础对象转换成ggplot对象进行排列,可以使用函数as.ggplot()。
#Box plots
Low_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Low.Freq))
High_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$High.Freq))
Peak_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Peak.Freq))
Delta_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Delta.Freq))
Peak_Time_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Peak.Time))
Delta_Time_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Delta.Time))
Center_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Center.Freq))
Start_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Start.Freq))
End_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$End.Freq))
#Histograms
Low_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Low.Freq))
High_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$High.Freq))
Peak_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Peak.Freq))
Delta_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Delta.Freq))
Peak_Time_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Peak.Time))
Delta_Time_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Delta.Time))
Center_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Center.Freq))
Start_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Start.Freq))
End_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$End.Freq))
#QQ Plots
Low_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Low.Freq)
High_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$High.Freq)
Peak_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Peak.Freq)
Delta_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Delta.Freq)
Delta_Time_qqplot<-ggqqplot(New_Acoustic_Parameters$Peak.Time)
Peak_Time_qqplot<-ggqqplot(New_Acoustic_Parameters$Delta.Time)
Center_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Center.Freq)
Start_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Start.Freq)
End_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$End.Freq)
#Open a new graphics window
dev.new()
#Plot the box plots, histograms, and qqplots on the same grid
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
ncol=9, nrow=3,
align="hv",
label_size = 9,
axis = "tblr")
示意图:
我正在检查我的数据是否正常,我已经创建了箱线图 - boxplot()
、直方图 - hist()
和 ggqqplots()
(使用 ggpubr
包,这是与 ggplot
对齐)。数据显示使用 Raven 软件测量的声谱图中的声学参数。
对于这个项目,我需要在视觉上整齐地表示我的结果,我想使用 cowplot
包中的 plot_grid()
将我的图对齐为 9 列和 3 行。我制作了 9 个箱线图、9 个直方图和 9 个 ggqqplot()
个对象。
当我尝试使用 plot_grid()
函数对齐绘图时,打印了 qqggplot() 但 hist() 和 boxplots() 对象没有 (见图 1)。我了解到我需要将 hist()
和 boxplot()
对象转换为 grob 对象。
我找到了一个网站(如下),该网站声明可以使用 as.glob()
或 as.ggplot()
来转换我的图表。我使用了下面这个 link 中的信息,但是没有成功。
Conversion to grob objects
在我尝试使用 as.grob()
函数,我收到错误消息 2(见下文)。
R代码
#Install library packages
library("ggpubr")
library("grid")
library("ggplotify")
library(ggplot2)
library(cowplot)
#Box plots
Low_Freq_Box<-boxplot(main_path$Low.Freq..Hz.)
High_Freq_Box<-boxplot(main_path$High.Freq..Hz.)
Peak_Freq_Box<-boxplot(main_path$Peak.Freq..Hz.)
Delta_Freq_Box<-boxplot(main_path$Delta.Freq..Hz.)
Peak_Time_Box<-boxplot(main_path$ Peak.Time..s.)
Delta_Time_Box<-boxplot(main_path$Delta.Time..s.)
Center_Freq_Box<-boxplot(main_path$Center.Freq..Hz.)
Start_Freq_Box<-boxplot(main_path$Start.Freq..Hz.)
End_Freq_Box<-boxplot(main_path$End.Freq..Hz.)
#Histograms
Low_Freq_hist<-hist(main_path$Low.Freq..Hz.)
High_Freq_hist<-hist(main_path$High.Freq..Hz.)
Peak_Freq_hist<-hist(main_path$Peak.Freq..Hz.)
Delta_Freq_hist<-hist(main_path$Delta.Freq..Hz.)
Peak_Time_hist<-hist(main_path$Peak.Time..s.)
Delta_Time_hist<-hist(main_path$Delta.Time..s.)
Center_Freq_hist<-hist(main_path$Center.Freq..Hz.)
Start_Freq_hist<-hist(main_path$Start.Freq..Hz.)
End_Freq_hist<-hist(main_path$End.Freq..Hz.)
#QQ Plots
Low_Freq_qqplot<-ggqqplot(main_path$Low.Freq..Hz.)
High_Freq_qqplot<-ggqqplot(main_path$High.Freq..Hz.)
Peak_Freq_qqplot<-ggqqplot(main_path$Peak.Freq..Hz.)
Delta_Freq_qqplot<-ggqqplot(main_path$Delta.Freq..Hz.)
Delta_Time_qqplot<-ggqqplot(main_path$Delta.Time..s.)
Peak_Time_qqplot<-ggqqplot(main_path$Peak.Time..s.)
Center_Freq_qqplot<-ggqqplot(main_path$Center.Freq..Hz.)
Start_Freq_qqplot<-ggqqplot(main_path$Start.Freq..Hz.)
End_Freq_qqplot<-ggqqplot(main_path$End.Freq..Hz.)
错误信息 1
#Plot the box plots, histograms, and qqplots on the same grid
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14', 15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
ncol=9, nrow=3)
#Warning Messages
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
+ Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
+ Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
+ labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
+ ncol=9, nrow=3,
+ align="hv",
+ label_size = 12)
There were 20 warnings (use warnings() to see them)
图 1
您是否尝试过使用 gridExtra
包的 grid.arrange()
功能?
有个例子on Cran here
对你来说它看起来像这样
library(gridExtra)
library(grid)
library(ggplot2)
grid.arrange(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot)
答案:
要使用plot_grid()函数将hist()和boxplot()等基础对象转换成ggplot对象进行排列,可以使用函数as.ggplot()。
#Box plots
Low_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Low.Freq))
High_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$High.Freq))
Peak_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Peak.Freq))
Delta_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Delta.Freq))
Peak_Time_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Peak.Time))
Delta_Time_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Delta.Time))
Center_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Center.Freq))
Start_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$Start.Freq))
End_Freq_Box<-as.ggplot(~boxplot(New_Acoustic_Parameters$End.Freq))
#Histograms
Low_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Low.Freq))
High_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$High.Freq))
Peak_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Peak.Freq))
Delta_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Delta.Freq))
Peak_Time_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Peak.Time))
Delta_Time_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Delta.Time))
Center_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Center.Freq))
Start_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$Start.Freq))
End_Freq_hist<-as.ggplot(~hist(New_Acoustic_Parameters$End.Freq))
#QQ Plots
Low_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Low.Freq)
High_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$High.Freq)
Peak_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Peak.Freq)
Delta_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Delta.Freq)
Delta_Time_qqplot<-ggqqplot(New_Acoustic_Parameters$Peak.Time)
Peak_Time_qqplot<-ggqqplot(New_Acoustic_Parameters$Delta.Time)
Center_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Center.Freq)
Start_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$Start.Freq)
End_Freq_qqplot<-ggqqplot(New_Acoustic_Parameters$End.Freq)
#Open a new graphics window
dev.new()
#Plot the box plots, histograms, and qqplots on the same grid
plot_grid(Low_Freq_Box, High_Freq_Box, Peak_Freq_Box, Delta_Freq_Box, Peak_Time_Box, Delta_Time_Box, Center_Freq_Box, Start_Freq_Box, End_Freq_Box,
Low_Freq_hist, High_Freq_hist, Peak_Freq_hist, Delta_Freq_hist, Peak_Time_hist, Delta_Time_hist, Center_Freq_hist, Start_Freq_hist, End_Freq_hist,
Low_Freq_qqplot, High_Freq_qqplot, Peak_Freq_qqplot, Delta_Freq_qqplot, Delta_Time_qqplot, Peak_Time_qqplot, Center_Freq_qqplot, Start_Freq_qqplot, End_Freq_qqplot,
labels=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"),
ncol=9, nrow=3,
align="hv",
label_size = 9,
axis = "tblr")
示意图: