我正在使用以下代码来生成冗余分析(RDA)的散布图。该图仅针对一个物种,我正在对另外两个物种进行此分析(我没有显示其他两个物种的代码,因为它基本上是相同的)。
rda.plot.sap <- ggplot(df1, aes(x=RDA1, y=RDA2)) +
geom_point(aes(shape = df1[,"Enclos"], color = df1[,"Type_enclos"]), size = 2) +
geom_hline(yintercept=0) +
geom_vline(xintercept=0) +
coord_fixed() +
scale_shape_manual(values = c(1, 19)) +
scale_color_manual(values=c('#999999','#E69F00'))
rda.plot.sap <- rda.plot.sap +
geom_segment(data=df2,
aes(x=0, xend=RDA1, y=0, yend=RDA2),
color="red", arrow=arrow(length=unit(0.01,"npc")), size = 0.8) +
geom_text(data=df2,
aes(x=RDA1, y=RDA2, label=rownames(df2),
hjust=0.5*(1-sign(RDA1)) + hjust_sap_x,
vjust=0.5*(1-sign(RDA2) + vjust_sap_x)),
color="red", size=5)
rda.plot.sap <- rda.plot.sap +
geom_segment(data=df3,
aes(x=0, xend=RDA1, y=0, yend=RDA2),
color="blue", arrow=arrow(length=unit(0.01,"npc")), size = 0.8)+
geom_text(data=df3,
aes(x=RDA1, y=RDA2, label=rownames(df3),
hjust=0.5*(1-sign(RDA1)),
vjust=0.5*(1-sign(RDA2))),
color="blue", size=5)
rda.plot.sap <- rda.plot.sap +
theme(panel.background = element_blank(),
axis.title = element_text(size = 20),
axis.line.x = element_line(color="black", size = 1),
axis.line.y = element_line(color="black", size = 1),
axis.text = element_text(size = 15),
legend.title = element_blank(),
legend.text = element_text(size = 15),
legend.key=element_blank(),
legend.position = c(0.15, 0.9)) +
xlim(c(-0.6, 0.4))
rda.plot.sap <- rda.plot.sap +
xlab(paste("RDA1 (", var.rda1, " % - p = ", p.rda1, ")", sep = "")) +
ylab(paste("RDA2 (", var.rda2, " % - p = ", p.rda2, ")", sep = ""))
代码工作得很好,并且我获得了三个独立的图,没有任何错误或警告。问题是,当我尝试使用cowplot软件包的功能plot_grid
组装这三个图时:
final_plot <- plot_grid(rda.plot.sap, rda.plot.epi, rda.plot.het,
nrow = 1, ncol = 3, labels = c("A", "B", "C"))
我总是得到相同的简单错误:
“错误:美学必须为长度1或与数据相同 (27):形状,颜色”。
即使是陌生人,在遇到此错误后,如果我想再次运行某个地块(仅一个物种)的代码,也会遇到相同的错误。
这是我的第一篇文章,所以我希望我对问题的描述足够准确。我很茫然,无法理解这里发生的事情,所以在此先感谢任何可以提供帮助的人。
答案 0 :(得分:0)
我不确定为什么,但是从labels
中删除plot_grid()
参数通常可以解决此问题。 (您只需要使用geom_text()
或ggtitle()
将标签分别添加到每个图。)
答案 1 :(得分:0)
根据针对此 gist 的评论,该问题与自定义主题有关,未设置 plot_grid
用于标签所需的美学。请参阅以下修复:
final_plot <- plot_grid(rda.plot.sap, rda.plot.epi, rda.plot.het,
nrow = 1, ncol = 3, labels = c("A", "B", "C"),
label_fontfamily = "Times", label_colour = "black")