【问题标题】:Error: Aesthetics must be either length 1 or the same as the data (9): size错误:美学必须是长度 1 或与数据相同 (9):大小
【发布时间】:2021-01-15 08:39:23
【问题描述】:

我正在尝试使用 qiime2R 和 ggplot2 绘制我的 PCOA,因为我发现 2D UniFrac 绘图比使用 Emperor 3D 绘图提供的信息更多。所以我跟着qiime2R教程,但是我在添加不同的美学时遇到了麻烦,我看过其他帖子,但我不太明白这个问题。这是我的代码。

qiime2 论坛的人帮不了我,所以也许你可以。

library(ggplot2)
library(qiime2R)

 metadata<-read_q2metadata("Metadata.tsv")
    uwunifrac<-read_qza("weighted_unifrac_pcoa_results.qza")
    shannon<-read_qza("shannon_vector.qza")$data %>% rownames_to_column("SampleID") 

    uwunifrac$data$Vectors %>%
      select(SampleID, PC1, PC2) %>%
      left_join(metadata) %>%
      left_join(shannon) %>%
      ggplot(aes(x=PC1, y=PC2, color=`Name`, shape=`Origen`, size=shannon)) +  
      geom_point(alpha=0.5) +#alpha controls transparency and helps when points are overlapping
      theme_q2r() +
      scale_shape_manual(values=c(16,1), name="Name") + 
      scale_size_continuous(name="Shannon Diversity") +
      scale_color_discrete(name="Name")
    ggsave("PCoA.pdf", height=4, width=5, device="pdf")

当我尝试编译时,我收到以下错误消息:

Error: Aesthetics must be either length 1 or the same as the data (9): size

但是,如果我只包含 1 种美学,例如:

ggplot(aes(x=PC1, y=PC2, color=Name))

它确实编译。我想知道是否有一种方法可以像我一开始尝试的那样包含所有美学。

查看我的数据

> uwunifrac$data$Vectors %>%
+     select(SampleID, PC1, PC2) %>%
+     left_join(metadata) %>%
+     left_join(shannon) Joining, by = "SampleID" Joining, by = "SampleID"   



 SampleID         PC1          PC2                  Name               Origen shannon_entropy
1   D1_16S  0.18825645 -0.047168594 Lixiviado de mina (2)    Minas de Riotinto        6.791300
2   D2_16S  0.09366309  0.106100155     Corta Atalaya (3)    Minas de Riotinto        4.375214
3   D3_16S  0.08844727  0.003118801         Rio Tinto (4)    Minas de Riotinto        5.090431
4   D4_16S -0.10670870  0.494599196            Odiel 3,4%            Rio Odiel        6.285716
5   D5_16S -0.51231492  0.021180538            Odiel 7,7%            Rio Odiel        5.881951
6   D6_16S -0.30245182 -0.339569170             Odiel 15%            Rio Odiel        5.440700
7   D7_16S  0.21368026 -0.041278615                  Pool Balsas de fosfoyesos        7.715696
8   D8_16S  0.20073878 -0.072788430          Piezometro 1 Balsas de fosfoyesos        7.547468
9   D9_16S  0.13668959 -0.124193881          Piezometro 2 Balsas de fosfoyesos        7.671805

所以现在我意识到,aes( 中的变量名称应该是 shannon_entropy 替换为 shannon。更改我收到一条新的错误消息

Error: Insufficient values in manual scale. 3 needed but only 2 provided.

提前致谢,何塞。

【问题讨论】:

  • 您能否通过dput 提供您的所有数据? (如果太大,请使用dput(head(data)),而不是提供所有内容)
  • 如果没有您的数据,我们只能猜测。但是从错误消息中......你确定你的数据集中有一个名为“shannon”的变量吗?要检查这一点,我建议将连接后的数据保存在变量中,这样您就可以检查传递给 ggplot 的数据集。
  • shannon 确实不是变量的名称。我已经更新了它,但我仍然收到一条错误消息

标签: r ggplot2 qiime


【解决方案1】:

对于您更新的问题:

您为 Origen 提供了两个形状值(16 和 1),但 Origen 有 3 个值(Minas ...、Rio ... 和 Balsas...)。您必须为每个 Origen 值提供一个形状值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2017-11-04
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多