首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组geom_point与geom_polygon

组geom_point与geom_polygon
EN

Stack Overflow用户
提问于 2018-09-12 07:34:40
回答 2查看 2.3K关注 0票数 5

我的数据集:

代码语言:javascript
复制
Taxa    dn  dc
Cha    10.2 -20.4
Cha    10.7 -19.7
Cha    4.9  -21.0
Cha    5.4  -20.6
Cha    8.6  -21.2
Cha    8.0  -20.9
Cha    8.1  -21.3
Cha    6.9  -21.1
Cha    8.5  -21.1
Cha    9.1  -20.8
Hyd    6.6  -19.2
Hyd    10.2 -17.0
Hyd    9.7  -18.2
Hyd    8.1  -16.5
Hyd    8.8  -15.8
Hyd    8.7  -15.8
Hyd    7.6  -18.3
Hyd    8.9  -16.0
Hyd    8.4  -17.5
Hyd    9.8  -18.8
Hyd    8.3  -18.4
Scy    9.4  -20.1
Scy    9.1  -20.0
Scy    7.8  -20.2
Scy    9.1  -17.6
Scy    8.2  -19.8
Scy    9.4  -19.2
Scy    9.0  -20.1
Sip    5.7  -15.2
Sip    6.2  -18.6
Sip    5.6  -18.0
Sip    8.6  -17.6
Sip    4.8  -16.9
Sip    5.2  -15.4
Sip    1.9  -18.4

我使用的代码是:

代码语言:javascript
复制
library(ggplot2)
ggplot(mydata, aes(x=dC, y=dN, colour=Taxa, shape=Taxa))+
  geom_point(size=2, alpha=0.5)+
  geom_polygon(aes(fill=Taxa, group=Taxa))+
  theme(legend.position = "none")

我想用数据中的“分类法”来绘制多边形组。然而,看起来多边形连接了每个点。

我想要的是这个。我该如何编辑我的代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 08:05:29

要连接组中的外部点和包围组中的外部点,请使用ggalt包中的ggalt函数。

代码语言:javascript
复制
library(ggplot2)
library(ggalt)
ggplot(mydata, aes(dc, dn)) +
    geom_point(aes(color = Taxa)) +
    geom_encircle(aes(fill = Taxa), s_shape = 1, expand = 0,
                  alpha = 0.2, color = "black", show.legend = FALSE)

使用s_shape = 1expand = 0连接外部点,否则就会包围边距。

票数 5
EN

Stack Overflow用户

发布于 2018-09-12 08:14:22

你也可以计算出凸起的船体,它们把它们画下来:

代码语言:javascript
复制
library(ggplot2)
library(plyr)

# some fake data:
mydata <- data.frame(Taxa = c('Cha','Cha','Cha','Cha','Cha','Cha','Hyd','Hyd','Hyd','Hyd','Hyd','Hyd'),
                     dn = c(10.2,10.7,4.9,5.4,8.6,8.0, 6.6,10.2,9.7,8.1,8.8,8.7),
                     dc =c(-20.4,-19.7,-21.0,-20.6,-21.2,-20.9,-19.2,-17.0,-18.2,-16.5,-15.8,-15.8))

# calculate convex hulls:
chulls <- ddply(mydata, .(Taxa), function(mydata) mydata[chull(mydata$dn, mydata$dc), ])

# plot them:
ggplot(data=mydata, aes(x=dn, y=dc, color=Taxa)) + geom_point() +
                   geom_polygon(data=chulls, aes(x=dn, y=dc, fill=Taxa, alpha=0.2)) 

不错的源这里

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

https://stackoverflow.com/questions/52289812

复制
相关文章

相似问题

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