1

我在二分法中使用 plotweb 来绘制植物传粉者网络,并且真的希望能够按顺序为昆虫盒子着色。我还没有找到或想出一个简单的方法来做到这一点。手动操作(为每个单独的框列出颜色)甚至比预期的更烦人,因为该函数会更改框的顺序以最大程度地减少交叉。我们的数据是一系列昆虫(格式为:Hymenoptera_Megachilidae_Megachile_policaris)和植物(格式为:Ratibida columnifera),它们都来自对象 Web(使用 frame2webs 制作)内的不同 Plots。

我发现使用 ifelse 和确切的标签名称可以让我选择特定的框来着色,如果我嵌套它们,我可以做多个并且它有效。

plotweb(Web$`Plot`,col.high=ifelse(colnames(Web$`Plot`)== "Hymenoptera_Megachilidae_Megachile_policaris","red4", ifelse(colnames(Web$`Plot`)== "Hymenoptera_Halictidae_Lasioglossum_bruneri","red4","grey80")))

我试着看看我是否可以为所有标签以“膜翅目”开头的盒子设置颜色,这样我只需要为每个订单做一行。但由于某种原因,它没有将颜色应用到正确的盒子上(这似乎是随机选择哪些是红色的,哪些不是红色的。

plotweb(Web$`Plot`,col.high=ifelse(Web$'Plot'== grepl('^Hymenoptera', Web$`Plot`),"red4","grey80"))

所以不幸的是,这绝对行不通。与上面条目相同的分类是彩色的,就是这样。即使每个订单都有代表,也只有红色灰色

plotweb(Web$`Plot`,col.high=ifelse(Web$`Crow Gas`== grepl('^Hymenoptera', Web$`Plot`),"red4",ifelse(Web$`Plot`== grepl('^Coleoptera', Web$`Plot`),"cyan4", ifelse(Web$`Plot`== grepl('^Diptera', Web$`Crow Gas`),"green","grey80"))))

在这一点上,我知道它会起作用,但我不想最终为每个物种都有一个 ifelse,手动使每个颜色对应于它的顺序。即使能够连接或使用“或”(我都尝试过,但都没有工作)让我列出每种颜色的几个物种,所以我只有 3 个 ifelses(即使它们长得离谱)也会很好。但最好我想要一些我在使用昆虫标签的子字符串之前尝试过的东西,这样代码可以很容易地应用于具有不同物种集的不同地块,所以我不必编写每个物种的完整列表时间我做一个不同的情节。

4

0 回答 0