Plotting two graphs getting the error: Cannot convert object of class list into a grob
Plotting two graphs getting the error: Cannot convert object of class list into a grob
我试图将两个箱线图 (box1, box2) 并排放置,并在左上角将它们标记为“A”和“B”。我正在尝试为此使用 cowplot
-package。
这是函数:
plot_grid(box1, box2, labels = c('A', 'B'), label_size = 12)
然后我收到警告信息:
In as_grob.default(plot) :
Cannot convert object of class list into a grob.*
我得到的唯一打印输出是 A 和 B 字母。
我也尝试过使用:
boxC <- c(box1, bow2)
plot_grid(plotlist = boxC, labels = c('A', 'B'), label_size = 12, nrow=2)
我的代码主要来自这个类似问题的答案,但它似乎对我不起作用。
在那个问题中,有人还建议使用 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",
sep = "\t", 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, labels = c('A', 'B'), 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",
sep = "\t", 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, labels = c('A', 'B'), ncol = 2)
我试图将两个箱线图 (box1, box2) 并排放置,并在左上角将它们标记为“A”和“B”。我正在尝试为此使用 cowplot
-package。
这是函数:
plot_grid(box1, box2, labels = c('A', 'B'), label_size = 12)
然后我收到警告信息:
In as_grob.default(plot) : Cannot convert object of class list into a grob.*
我得到的唯一打印输出是 A 和 B 字母。 我也尝试过使用:
boxC <- c(box1, bow2)
plot_grid(plotlist = boxC, labels = c('A', 'B'), label_size = 12, nrow=2)
我的代码主要来自这个类似问题的答案,但它似乎对我不起作用。
在那个问题中,有人还建议使用 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",
sep = "\t", 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, labels = c('A', 'B'), 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",
sep = "\t", 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, labels = c('A', 'B'), ncol = 2)