gpt4 book ai didi

R 根据需要创建一个覆盖美国 basemap 和其他空间图层的空间气泡图

转载 作者:行者123 更新时间:2023-12-04 12:37:36 24 4
gpt4 key购买 nike

我正在尝试制作一个覆盖在美国 basemap 之上的漂亮气泡图(如果愿意,我可以导入一个 shapefile,但我一直在使用 R basemap 。

library(ggplot2,sp,raster,maps,mapdata,maptools,ggmap,rgeos)
myData = data.frame(name=c("Florida","Colorado","california","Harvard","Yellowstone"),
lat=c(28.1,39,37,42,44.6),
long=c(-81.6,-105.5,-120,-71,-110),
pop=c(280,156,128,118,202))

使用下面的代码,我改编自另一个堆栈溢出帖子(Create bubble plot in R using satellite map),我能够在美国 map 上叠加气泡图。然而,这渲染得非常慢,范围太窄,它被限制在一个盒子里,据我所知,我无法将其他图层添加到绘图中, basemap 很厚,视觉上不干净。

xy <- myData[,c("long", "lat")]
nl <- getData('GADM', country="USA", level=1) #raster data, format SpatialPolygonsDataFrame
nl <- gSimplify(nl, tol=0.01, topologyPreserve=TRUE)
# coercing the polygon outlines to a SpatialLines object
spl <- list("sp.lines", as(nl, "SpatialLines"))
SPDF <- SpatialPointsDataFrame(coords=xy, data=myData)
coordinates(myData) <- c("lat", "long")
projection(SPDF)<- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"
coordinates(SPDF)[1:5,] #retrieves spatial coordinates form the dataframe
bubble(SPDF, "pop", sp.layout=spl, main="This is It!")

我可以使用这段代码绘制漂亮的 basemap 。我向 map 添加了点,但它们的大小未按我数据中的 pop 列确定。我可以向这张 map 添加额外的图层。但是我可以像使用气泡图一样控制点的大小和符号本身吗?

map(database= "world", ylim=c(45,90), 
xlim=c(-160,-50), col="grey80",
fill=TRUE, projection="gilbert",
orientation= c(90,0,225))

coord <- mapproject(myData$lon, myData$lat, proj="gilbert",orientation=c(90, 0, 225))
points(coord, pch=20, cex=1.2, col="red")

任何人都可以指导我在 R 中绘制气泡图的最佳方法,我可以在其中调整气泡图中符号的填充和轮廓,并且我可以添加一个干净的 basemap ,我可以 a) 控制(填充和线条)的颜色和 b) 向(例如另一个 shapefile 层)添加附加层。

预先感谢您的任何建议。

最佳答案

这可能会有帮助。我用我自己的方式解决了你的问题。这可能是实现您可能想要做的事情的更简单的操作。对于 map ,GADM是很棒的。但是,有些包裹已经有了 map 。在这里,您可以通过以下方式轻松获取美国 map 。然后,您可以使用 ggplot2 绘制 map 。 . geom_path吸引美国,geom_pointmyData 中添加数据点.如果你想控制气泡的大小ggplot2 , 你可以使用 sizeaes .

library(map)
library(ggplot2)

# Get US map
usa <- map_data("state")

# Draw the map and add the data points in myData

ggplot() +
geom_path(data = usa, aes(x = long, y = lat, group = group)) +
geom_point(data = myData, aes(x = long, y = lat, size = pop), color = "red")

enter image description here

关于R 根据需要创建一个覆盖美国 basemap 和其他空间图层的空间气泡图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com