R语言数据可视化之美 · 第11章

精读版:概念讲解 + 图 + 代码,看这一页就够了

目录
目录

11.1 地图数据从哪来

画地图需要"边界数据"(多边形的经纬度坐标)。来源:
maps / mapdata 包:自带世界、美国、中国等基础地图(ggplot2 的 map_data() 直接取);
rnaturalearth 包:免费获取全球各国/各州边界(下载自然地球数据);
自己的 shp 文件:rgdal::readOGR() 读入(本书演示用虚拟地图 Virtual_Map.shp)。
注意:本书因地图管理条例用虚拟国家/城市数据演示,但代码思路完全通用——把 shp 换成你的区域就行。
画图底层逻辑:地图 = 一堆多边形(polygon),每个多边形 = 一串经纬度点。所以 ggplot 用 geom_polygon(aes(long, lat, group=group)) 一画就成。

11.2 分级统计地图(choropleth):按区域填色

分级统计地图按行政区域(省/市/县)着色,颜色=该区域的数值。
实现:读 shp → fortify 转成数据框 → left_join 拼上数值 → geom_polygon(aes(fill=数值))。
看什么:哪些区域颜色深/浅,形成的地理分布规律(如污染物浓度高的区域连成一片)。
配色要点:连续数值用渐变(YlGnBu 这类单色系),分类数值用离散色(Set2 等)。
论文用法:采样点位分布、区域污染物浓度分布图。

library(rgdal); library(ggplot2)
dataProjected <- readOGR("Virtual_Map1.shp")          # 读边界
dataProjected@data$id <- rownames(dataProjected@data)
df_Map <- full_join(fortify(dataProjected), dataProjected@data, by = "id")
df <- left_join(df_Map, df_city[c('country', 'orange')], by = "country")
ggplot() +
  geom_polygon(data = df, aes(x = long, y = lat, group = group, fill = orange),
               colour = "black", size = 0.25) +
  scale_fill_gradientn(colours = rev(brewer.pal(9, 'YlGnBu')))

11.3 点描法与气泡地图:点/圈表示数值

点位数据(采样点、监测站)三种画法:
点描法地图:每个位置一个点,点大小=数值(其实和气泡地图同源);
气泡地图:气泡大小=数值,比纯点醒目,同样注意面积感知(scale_size_area);
多数据系列气泡/双气泡:一个位置画两组气泡(两个指标并排)或多系列对比。
看什么:大泡泡聚集在哪些区域=高值热点。
论文用法:监测站点数值分布(哪个站污染负荷高)。

图11-3 气泡地图

11.4 带饼图/柱形图的地图:位置+构成

每个位置不光有数值,还想看"构成"(比例)——把饼图/柱形图放到地图对应位置:
饼图地图:每个位置一个小饼图,饼=该点各组分占比;
柱形图地图:每个位置一个小柱形图(或 3D 柱),柱高=数值。
注意:小图太多会拥挤,位置数量 > 20 就放弃这种画法,改用分级统计地图。
论文用法:各采样点物种组成(饼图)或污染物浓度(3D 柱形)地图。

图11-4 带饼图的地图

11.5 沃罗诺伊地图:把空间划分给最近的站点

沃罗诺伊图(Voronoi)把平面划分成"每个点属于离它最近的站点"的区域——像水渍扩散到相遇为止。
用途:给不规则采样点的数据做空间分区(每个采样点的"势力范围"),配合填色变成分级地图。
实现:deldir 包或 sf 包的 st_voronoi()。

11.6 连接/流向地图与等位地图

连接和流向地图:点与点之间画线/箭头(物流、迁移路径),线宽/箭头=流量;
等位地图(等值线地图):从离散监测点数据插值出连续面(核密度、多项式平滑、loess 平滑),画成等值线+颜色带——像气象图。
实现:连接图用 geom_segment/geom_curve;等位图用 stat_density2d 或插值函数 + geom_contour。
论文用法:污染物浓度的连续分布面(从采样点插值)——比只画点信息量大得多。

图11-8 等位地图(核密度估计)

11.7 线型地图 / 点状地图 / 三维柱形地图

线型地图:只画路径/路线(河流、道路、迁徙路线),突出"线";
点状地图:纯点位分布(采样点在哪里),常用空心/实心点区分类别;
三维柱形地图:位置上的柱形立体化(plot3D 的 hist3D),视觉冲击强但论文慎用。
论文用法:采样点位置图是环境论文的常规配图(研究区域概况图)。

图11-10 点状地图

11.8 简化示意图(cartogram)与邮标法:变形与拼图

cartogram(变形地图):把区域面积扭曲成与数值成正比——"谁数值大谁被吹大"。视觉冲击强,但不熟悉的人可能看不懂,论文慎用;
邮标法:把多个小地图按网格排成一张大图(每个小图=一个区域/一年),像邮票册——适合逐年对比同一区域的分布变化。
网格分面示意图:整片区域切网格,每个格子一张小图(类似分面)——大范围细粒度对比。
论文用法:多年监测数据逐年对比(邮标法)很实用。

11.9 本章选图逻辑

| 你的情况 | 选它 | |---|---| | 点位分布 | 点状地图 | | 点位+数值 | 气泡地图 | | 区域数值分布 | 分级统计地图(choropleth) | | 点位+构成占比 | 饼图/柱形图地图(点位少时) | | 不规则采样点做连续面 | 等位地图(插值) | | 点与点之间路径/流量 | 连接/流向地图 | | 逐年区域对比 | 邮标法(网格小地图) | | 强调数值变形 | cartogram(慎用) |

选图逻辑(记这个就够)

| 你的情况 | 选它 | |---|---| | 点位分布 | 点状地图 | | 点位+数值 | 气泡地图 | | 区域数值分布 | 分级统计地图(choropleth) | | 点位+构成占比 | 饼图/柱形图地图(点位少时) | | 不规则采样点做连续面 | 等位地图(插值) | | 点与点之间路径/流量 | 连接/流向地图 | | 逐年区域对比 | 邮标法(网格小地图) | | 强调数值变形 | cartogram(慎用)

选图逻辑(记这个就够)

| 你的情况 | 选它 | |---|---| | 点位分布 | 点状地图 | | 点位+数值 | 气泡地图 | | 区域数值分布 | 分级统计地图(choropleth) | | 点位+构成占比 | 饼图/柱形图地图(点位少时) | | 不规则采样点做连续面 | 等位地图(插值) | | 点与点之间路径/流量 | 连接/流向地图 | | 逐年区域对比 | 邮标法(网格小地图) | | 强调数值变形 | cartogram(慎用)
本章一句话总结:地理空间选图:点状地图看点位、气泡地图看位置+数值、分级统计图按数值填色、变形地图面积=数值(书中用虚拟数据演示)。
×