当前位置: 首页 > 知识库问答 >
问题:

使用cowplot::plot\u网格组装绘图时出错

爱乐邦
2023-03-14

我使用以下代码生成冗余分析(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\u 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):形状、颜色相同”。

更奇怪的是,在得到这个错误后,如果我想再次运行一个单独地块(仅一个物种)的代码,我会得到相同的错误。

这是我的第一篇文章,所以我希望我描述的问题足够准确。我不知道这里发生了什么,所以提前感谢任何能帮助我的人。

共有2个答案

廉展鹏
2023-03-14

根据对本要点的评论,该问题与自定义主题有关,没有为标签设置所需的plot\u 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")  
唐声
2023-03-14

我不知道为什么,但是从plot\u grid()中删除labels参数通常可以解决这个问题。(只需使用geom_text()ggtitle()标签分别添加到每个绘图)

 类似资料:
  • 问题内容: 我想提请使用Java网格(10×10),但我们必须使用来实现它的,这是我的计划至今 问题答案: 该代码有效。 只需删除25

  • 我在使用文件选择器包后出错。我对此搜索了很多,但仍然无法解决问题。我也试过清理,但也不管用。 错误如下:{ 失败:构建失败,但有一个异常。 错误:任务执行失败:应用程序:processDebugResources 执行com.android.build.gradle.internal.tasks时出错。Workers$ActionFacade Android资源链接失败F:\flatter\bit

  • 我是JavaFx的新手,我想知道如何绘制网格,我想在网格角上绘制点。我应该使用网格窗格作为基础还是线条图?使用网格并在其上绘制的最佳类是什么?

  • 我想用一个std::shared\u ptr替换类中的一些原始指针,这样在创建该类的副本时就不必担心了。但原始指针指向一个动态数组。当您为shared\u ptr提供一个自定义的deleter时,可以将其与动态数组一起使用。 g、

  • 我有一个数据帧,我试图在条形图中绘制,但我面临一个奇怪的错误。 print语句给出: 然后是绘图代码:给出以下错误: ---------------------------------------------------------------------------KeyError回溯(最近一次调用上次)~/opt/anaconda3/lib/python3。8/现场包/熊猫/核心/索引/基础。

  • 我以前做了几个实验,以找到绘制大规模六边形网格的最佳方法。 我尝试使用、绘制hexes。它在小网格中工作得很好,但如果我在一个网格中有超过1000+的单元格,fps就开始很难下降。 所以我想出了这个想法,将纹理(包含六边形网格模式)应用到一个简单的平面上。我只需要设置纹理的函数来指定垂直和水平执行多少次重复。

  • 问题内容: 我正在编写一个像素艺术应用程序,该应用程序可以将用户在屏幕上绘制的图像绘制为像素外观。有两种解决方法。保存后对图像进行像素化处理,或者在手之前具有网格,以便用户绘制像素图像。我在后一种方法上找不到任何东西。所以我的第一个问题是绘制一个网格,如果触摸一个单元格,它将改变它的颜色。我尝试在画布上绘制矩形,但这毫无意义,因为我无法控制单元格。 我在考虑嵌套的for循环,该循环在每个单元格处创

  • 我正试图用Dash构建一个仪表板,它由一系列图块(文本)组成,如下图所示。 我试图构建一个组件来重用它,并构建下面的布局。每个框将包含标题、值和描述,如下所示。 有可用的组件吗?有人可以帮助我任何基本的想法/代码? 提前谢谢!