如何创建澳大利亚热图

问题描述 投票:0回答:1

我找到了以下来源,其中记录了如何创建世界地图的热图。

# load required packages
library(ggplot2)
library(mapdata)

# create example data with coordinates and values
lon <- c(9.481544, 2.352222, -74.005973, 139.650312)
lat <- c(51.312801, 48.856613, 40.712776, 35.676191)
value <- c(12, 15, 19, 30)
foo1 <- data.frame(lon, lat, value)

# get world map data
world_map <- map_data("world")

# create heat map using ggplot2
ggplot() +
  geom_polygon(data = world_map, aes(x = long, y = lat, group = group), fill = "white", color = "grey") +
  geom_point(data = foo1, aes(x = lon, y = lat, fill = value), size = 5, shape = 21) +
  scale_fill_gradient(low = "white", high = "red") +
  labs(x = "Longitude", y = "Latitude", title = "Example Heat Map")

但是,当我想用自己的数据复制此数据时,因为我的纬度/经度数据仅在澳大利亚境内,所以我只想看到澳大利亚出现在地图上,因为使用上面的代码很难将热图视为澳大利亚只占地图的一小部分。根据文档here,“mapdata”包似乎没有仅适用于澳大利亚的选项。

有谁知道我如何修改示例代码来实现我想要的效果?或者还有其他方法可以创建澳大利亚的热图吗?

r ggplot2 maps heatmap world-map
1个回答
0
投票

您可以在

region
地图中定义
world
。如果您决定使用
ggplot2::map_data()
ggplot2::geom_polygon()
,您可能至少需要对地图投影进行一些控制,这就是
coord_sf()
的作用。

library(ggplot2)

# define a region to get Australia
map_aus <- map_data("world", region = "Australia")

# generate example data considering map coordinates
set.seed(42)
example_data <- data.frame(
  lon = rnorm(10, mean = 135, sd = 8 ),
  lat = rnorm(10, mean = -25, sd = 3 ),
  value = runif(10,1,100)
)

# create heat map using ggplot2
p <- 
  ggplot() +
  geom_polygon(data = map_aus, aes(x = long, y = lat, group = group), fill = "white", color = "grey") +
  geom_point(data = example_data, aes(x = lon, y = lat, fill = value), size = 5, shape = 21) +
  scale_fill_gradient(low = "white", high = "red") +
  labs(x = "Longitude", y = "Latitude", title = "Example Heat Map")

p

p + coord_sf(crs = 3857) + ggtitle("WGS84 / Pseudo-Mercator")

p + coord_sf(crs = 3107) + ggtitle("GDA94 / SA Lambert")

创建于 2024-03-25,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.