问题描述
我试图将两个框线图(Box1,Box2)彼此并排放置,并在左上角分别标记为“ A”和“ B”。我正在尝试使用cowplot
软件包。
这是功能:
plot_grid(Box1,Box2,labels = c('A','B'),label_size = 12)
然后我收到警告消息:
在as_grob.default(plot)中: 无法将类列表的对象转换为grob。*
我得到的唯一打印输出是A和B字母。 我也尝试使用:
BoxC <- c(Box1,bow2)
plot_grid(plotlist = BoxC,label_size = 12,nrow=2)
我的代码主要来自这个类似问题的答案,但它似乎对我不起作用。
Lay out multiple ggplot graphs on a page
在这个问题上,有人还建议使用dev.off()
,但这对我也不起作用。
非常感谢您的答复!
我根据mhh的答复编写的解决方案:
Box1_data <- read.table(file = "clipboard",sep = "\t",header=TRUE)
Box1_data$Histology <- as.factor(Box1_data$Histology)
Box1plot <- ggplot(Box1_data,aes(x=Histology,y=No.Variants)) + geom_Boxplot()
Box1plot
Box2_data <- read.table(file = "clipboard",header=TRUE)
Box2_data$Stage <- as.factor(Box2_data$Stage)
Box2plot <- ggplot(Box2_data,aes(x=Stage,y=No.Variants)) + geom_Boxplot()
Box2plot
Box_list <- list(Box1plot,Box2plot)
> ggarrange(plotlist = Box_list,ncol = 2)
解决方法
这是因为它期待一个列表,但是您正在提供一个向量!
要解决此问题,您只需使用boxC <- list(box1,box2)
。
这是一个可行的例子
为此,您需要ggplot2
和ggpubr
使用install.packages("ggpubr")
安装后者。
然后使用library(ggpubr)
library(ggplot2)
library(ggpubr)
df1 <- data.frame(group = "Stuff",var = runif(10))
df2 <- data.frame(group = "Stash",var = runif(10))
box1 <- ggplot(data = df1,aes(y = var)) +
geom_boxplot()
box2 <- ggplot(data = df2,aes(y = var)) +
geom_boxplot()
my_plot_list <- list(box1,box2)
ggarrange(plotlist = my_plot_list,labels = c('A','B'),nrow = 2)
由reprex package(v0.3.0)于2020-08-19创建
,感谢mhh的回答,我使这段代码有效了! :)
BOX1_data <- read.table(file = "clipboard",sep = "\t",header=TRUE)
BOX1_data$Histology <- as.factor(BOX1_data$Histology)
BOX1plot <- ggplot(BOX1_data,aes(x=Histology,y=No.Variants)) + geom_boxplot()
BOX1plot
BOX2_data <- read.table(file = "clipboard",header=TRUE)
BOX2_data$Stage <- as.factor(BOX2_data$Stage)
BOX2plot <- ggplot(BOX2_data,aes(x=Stage,y=No.Variants)) + geom_boxplot()
BOX2plot
BOX_list <- list(BOX1plot,BOX2plot)
> ggarrange(plotlist = BOX_list,ncol = 2)