【问题标题】:How to add point labels to ggplot object?如何将点标签添加到 ggplot 对象?
【发布时间】:2018-09-04 08:42:41
【问题描述】:

我在这里遇到了这个问题。我正在尝试为我的 CCA 图添加标签,仅适用于物种类别。通常我会将它包含在 aes 函数中,但是,ggplot2 无法创建 cca 图,所以我不得不使用 vegan 包来创建图,ggvegan 将其转换为 ggplot 可识别的对象,然后对其进行编辑从那里作为一个对象。

cca <- cca(sp_matrix~average+bpi_st_fi+northing+easting+slope+depth, 
data=mollusca)
plot(cca)
summary(cca)
ccaplot <- autoplot(cca)
ccaplot + 
  lims(x = c(-2.5, 2.5)) + lims(y = c(-2.5,2.5)) +  
  theme(panel.background = element_blank()) + geom_hline(aes(yintercept=0), 
colour="#8c8c8c") +
  geom_vline(aes(xintercept=0), colour="#8c8c8c")

这是生成的 CCA 图

当我使用“vegan”创建原始图时,它会标记物种,但当我将其转换为 ggplot 对象时,它会删除它们。我是否必须使用基本 R 代码编辑绘图,还是有办法既取回物种标签并使用 ggplot2 编辑它们的大小、字体和颜色?

【问题讨论】:

  • 使用fortify(cca, display = "sp") 获取物种分数,然后将此data.frame 提供给geom_label
  • 对不起,我对R不是很精通,如何把它做成数据框并交给geom_label?

标签: r ggplot2 vegan


【解决方案1】:

这是一种方法。我使用 ggrepel 来减少重叠标签。在实践中,您可能只需要选择几个物种来标记,除非您的系统物种贫乏

library("vegan")
library("ggvegan")
library("ggrepel")
data("dune")
data("dune.env")


CCA <- cca(dune ~ ., data = dune.env[,1:3])

sp <- fortify(CCA, display = "sp")

autoplot(CCA) +
  geom_text_repel(data = sp, mapping = aes(x = CCA1, y = CCA2, label = Label))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多