【发布时间】:2018-07-19 08:00:58
【问题描述】:
我正在尝试创建一个包含坐标、密度和凸包多边形的 ggplot。
数据是一组二十个经纬度点。
这是我的代码:
# Data
economy <- read.csv("data-economy.csv", header=TRUE)
# Convex hulls.
hulls <- ddply(economy, .(Latitude, Longitude), function(economy)
economy[chull(economy$Latitude, economy$Longitude), ])
fig <- ggplot(economy, aes(Latitude, Longitude, colour="black", fill="black")) +
geom_point() +
geom_density2d(alpha=.5) +
labs(x = "Latitude", y = "Longitude") +
geom_polygon(data=hulls, alpha=.2)
fig
生成的图如下所示:
我尝试了一些方法,但无法让凸包仅包含最大纬度和经度的点。我可以使用以下代码在 ggplot 之外获得我想要的形状:
X <- economy
chull(X)
plot(X, cex = 0.5)
hpts <- chull(X)
hpts <- c(hpts, hpts[1])
lines(X[hpts, ])
它给我的结果是这样的:
如何在 ggplot 中获得与 R base 相同的形状?
另外,为什么当我在我的 ggplot 代码中更改颜色时,它不会改变绘图?
【问题讨论】:
-
@Mikko Marttila 谢谢。我使用该问题中的代码来提出到目前为止的内容。我不明白为什么它不只使用我数据中的外部点 - 有什么想法吗?
-
在您的
ddply调用中,您将通过Latitude和Longitude的唯一值(即不同的点)拆分数据,并为每个点找到凸包,这就是点本身. -
试试
hulls <- economy[chull(economy$Latitude, economy$Longitude), ] -
链接的交叉验证帖子中的答案使用
ddply以便同时为多个组找到凸包;而在您的问题中,您只有一组要点可以找到解决方案,因此您不需要在这里ddply。
标签: r