我使用二分包中的函数“plotweb”对二分网络进行了可视化。现在我想把标签用斜体(物种名称)。
plotweb(datamatrix)
我在此功能的帮助选项卡中找不到任何有用的命令。其他建议?
不幸的是,bipartite::plotweb
似乎不允许这样的参数font = 3
,它graphics::par
代表斜体字体。
在这里,我建议两种解决方案:
par(font = 3)
获得所需斜体字体的一种方法是强制图形设备的所有字体为斜体:
library(bipartite)
par(font = 3)
data(Safariland)
plotweb(Safariland)
完成一个图形并移至另一个图形后,您可以运行dev.off()
以将图形参数切换为其默认原始值。或者保存默认值par
并在需要时重写:
dpar <- par()
par(font = 3)
data(Safariland)
plotweb(Safariland)
par(dpar)
gTree
对象并仅编辑您需要的内容(grid
包装意识形态)您可以将生成的图转换plotweb
为gTree
对象。AgTree
充当许多网格图形对象/组件(“grobs”)的容器列表。
然而,这个解决方案更加冗长和复杂。优点是您几乎可以进行任何您希望的微调。
library(bipartite)
library(gridGraphics)
data(Safariland)
# Creates a gTree object from the "usual" plot generated by `plotweb`
my_gTree <- grid.grabExpr(grid.echo(function() plotweb(Safariland)))
# View the structure of the newly created gTree object
View(my_gTree)
# Example of editing the font of the text grobs in the range 28-36,
# that is, the bottom labels (use regular expression)
my_gTree <- editGrob(grob = my_gTree,
gPath = "graphics-plot-1-text-2[8-9]|3[0-6]",
gp = gpar(font = 3L),
grep = TRUE,
global = TRUE)
# Plot the edited graph
grid.newpage(); grid.draw(my_gTree)
如果你愿意,你可以保存它ggplot2::ggsave()
library(ggplot2)
ggsave(filename = "plotweb-grid-version-trial.png", plot = my_gTree)
如果要编辑特定标签,可以尝试:
my_gTree[["children"]][["graphics-plot-1-text-1"]][["gp"]][["font"]] <- 3L
此外,如果您想通过物种名称匹配某些 grob 标签,那么您可以执行以下操作,我只将“Aristotelia chilensis”和“Schinus patagonicus”物种更改为斜体。不幸的是,它变得令人费解,但它证明了可以使用包进行微调grid
:
# Get all grobs referring to species labels
label_grobs <- getGrob(gTree = my_gTree,
gPath = "graphics-plot-1-text-.*",
grep = TRUE,
global = TRUE)
# Get the species labels
sp <- rep(NA_character_, length(label_grobs))
for (i in 1:length(label_grobs)){
sp[i] <- label_grobs[[i]][["label"]]
}
# Edit only those grobs of desired species
sp_idx <- which(sp %in% c("Aristotelia chilensis", "Schinus patagonicus"))
for (i in sp_idx){
grob_char <- paste0("graphics-plot-1-text-", i)
my_gTree[["children"]][[grob_char]][["gp"]][["font"]] <- 3L
}
# display and save the edited gTree
grid.newpage(); grid.draw(my_gTree)
ggsave(filename = "plotweb-grid-edit-by-species.png", plot = my_gTree)