首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCA :带有自动绘图或ggplot2的标记点

DCA :带有自动绘图或ggplot2的标记点
EN

Stack Overflow用户
提问于 2021-02-11 23:40:24
回答 1查看 1K关注 0票数 0

我发现很难将带有DCA的站点的标签放置在自动绘图或in图中。

我还想根据它们的组来区分自动绘图/ggplot上的各个点。

这是我所使用的数据和代码,它运行良好,直到自动绘图/ggplot命令为止:

代码语言:javascript
复制
library(vegan)
data(dune)
d <- vegdist(dune)
csin <- hclust(d, method = "single")
cl <- cutree(csin, 3)
dune.dca <- decorana(dune)
autoplot(dune.dca)

这是获得的自动绘图:

我使用的是简单的编码,我尝试了这些代码,但它们并没有引导我找到任何地方:

代码语言:javascript
复制
autoplot(dune.dca, label.size = 3, data = dune, colour = cl)
ggplot(dune.dca(x=DCA1, y=DCA2,colour=cl))
ggplot(dune.dca, display = ‘site’, pch = 16, col = cl)
ggrepel::geom_text_repel(aes(dune.dca))

如果有人有一个简单的建议,那就太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-13 08:55:32

通过添加的信息(包),我能够深入挖掘。

问题是(简而言之),autoplot.decorana将数据添加到特定层( geom_pointgeom_text)。这不会继承到其他层,因此添加其他层会导致空白页。

基本上,请注意下面两个代码字符串中的一个会导致错误,并注意data参数的位置:

代码语言:javascript
复制
# Error: 
ggplot() + 
  geom_point(data = mtcars, mapping = aes_string(x = 'hp', y = 'mpg')) +
  geom_label(aes(x = hp, y = mpg, label = cyl))
# Work:
ggplot(data = mtcars) + 
  geom_point(mapping = aes_string(x = 'hp', y = 'mpg')) +
  geom_label(aes(x = hp, y = mpg, label = cyl))

ggvegan:::autoplot.decorana将数据放置在示例中,返回一个错误。

我看到了两种解决这个问题的方法:

mapping.

  • Extract

  • 使用ggplot_buildlayer_data提取图层数据,并创建一个整体或单层(生成数据的代码),并手动创建我们的绘图(不使用
  1. )。

老实说,我认为第二个更简单,因为我们可能需要提取更多的信息,以使我们的数据合理。通过查看ggvegan:::autoplot.decorana的源代码(简单地将其打印到控制台,去掉括号),我们可以提取下面的代码,生成与图中使用的数据相同的数据。

代码语言:javascript
复制
ggvegan_data <- function(object, axes = c(1, 2), layers = c("species", "sites"), ...){
  obj <- fortify(object, axes = axes, ...)
  obj <- obj[obj$Score %in% layers, , drop = FALSE]
  want <- obj$Score %in% c("species", "sites")
  obj[want, , drop = FALSE]
}

这样,我们就可以生成我们想要的任何图,有适当的映射,而不是单独的层映射。

代码语言:javascript
复制
dune.plot.data <- ggvegan_data(dune.dca)
p <- ggplot(data = dune.dca, aes(x = DCA1, DCA2, colour = Score)) + 
  geom_point() + 
  geom_text(aes(label = Label), nudge_y = 0.3)
p

这给了我们我希望的是你想要的输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66164593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档