地理特征类可视化图像总结

一、蜂窝热力地图

1.概念

  蜂窝热力图是一种通过将地图划分为六边形单元格(蜂窝),并根据每个单元格中的数据密度或数量来着色的地图。颜色的深浅表示数据的浓度或强度,常用于展示地理区域内的数据分布和密度。

2.特点

  • 使用六边形网格聚合数据点,覆盖更均匀,视觉上更清晰。
  • 适合处理密集型空间数据,减少视觉杂乱,突出数据分布密度。
  • 避免行政边界不规则的干扰,适合展示连续分布数据。
  • 支持多尺度分析,可通过调整网格大小从宏观趋势切换到微观细节。

3.应用场景

  • 城市人口分布:展示城市或区域内不同区域的人口分布,帮助城市规划者做出合理的资源分配。
  • 交通流量分析:展示不同区域的交通流量密度,帮助决策者制定交通管理政策。
  • 环境监测:如空气质量监测、污染浓度等,通过蜂窝热力图分析不同区域的环境变化。
  • 犯罪热点分析:展示犯罪频发区域,帮助执法部门进行资源调配。
  • 共享单车/出租车需求热点:分析需求分布,优化车辆投放。

4.代码实现

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 # 设置字体和负号显示
 5 plt.rcParams['font.sans-serif'] = ['SimHei']
 6 plt.rcParams['axes.unicode_minus'] = False
 7 
 8 # 生成示例数据
 9 np.random.seed(42)
10 x = np.random.normal(0, 1, 10000)  # 模拟经度数据
11 y = np.random.normal(0, 1, 10000)  # 模拟纬度数据
12 
13 # 创建蜂窝热力地图
14 plt.figure(figsize=(10, 8))
15 hexbin = plt.hexbin(x, y, gridsize=30, cmap='YlOrRd')  # 使用 30x30 的六边形网格
16 plt.colorbar(hexbin, label='数据密度')  # 添加颜色条
17 plt.title('蜂窝热力地图示例')
18 plt.xlabel('经度')
19 plt.ylabel('纬度')
20 plt.show()

二、变形地图

1.概念

  变形地图是一种特殊的地图类型,通过调整地图上各个区域的大小来反映特定的数据指标(如人口、GDP、面积等),同时尽量保持区域的形状和相对位置。它是一种可视化工具,用于直观展示数据的空间分布差异。

2.特点

  • 数据驱动的变形:地图的变形是基于特定数据指标的,例如人口数量、经济总量等。
  • 保持拓扑结构:尽管区域大小会根据数据进行调整,但相邻关系和相对位置尽量保持不变。
  • 直观性强:通过视觉上的变形,直观地展示数据的分布差异。
  • 灵活性高:可以应用于多种数据类型和地理区域。
  • 视觉冲击力强:通过夸张或缩小某些区域,突出数据的不均衡性。

3.应用场景

  • 人口分布:展示不同国家或地区的人口密度,突出人口密集和稀疏的区域。
  • 经济数据:如 GDP、贸易额等,直观展示经济活动的集中区域。
  • 选举结果:展示不同地区的投票结果,突出选举倾向。
  • 资源分布:如矿产资源、水资源等,展示资源的地理分布差异。
  • 社会数据:如犯罪率、贫困率等,帮助政策制定者了解社会问题的分布。

4.代码实现

 

 1 import matplotlib.pyplot as plt
 2 import geopandas as gpd
 3 import cartopy.crs as ccrs
 4 import pandas as pd
 5 from shapely.affinity import scale
 6 
 7 def create_deformed_map():
 8     # 加载世界地图数据
 9     world = gpd.read_file('ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp')
10 
11     # 查看列名
12     print("World columns:", world.columns)
13 
14     # 加载数据
15     data = pd.read_csv('data.csv')
16     print("Data columns:", data.columns)
17 
18     # 使用 'SOVEREIGNT' 列作为合并的键
19     world = world.merge(data, left_on='SOVEREIGNT', right_on='country', how='left')
20     world['value'] = world['value'].fillna(0)
21 
22     # 设置投影
23     projection = ccrs.PlateCarree()
24 
25     # 创建图形和轴
26     fig, ax = plt.subplots(figsize=(12, 8), subplot_kw={'projection': projection})
27 
28     # 根据数据进行变形
29     max_value = world['value'].max()
30     scale_factor = 1.5  # 变形比例因子
31     for _, row in world.iterrows():
32         if row['value'] > 0:
33             # 计算变形后的几何形状
34             geometry = row['geometry']
35             scaled_geometry = scale(geometry, xfact=1 + (row['value'] / max_value) * scale_factor,
36                                     yfact=1 + (row['value'] / max_value) * scale_factor,
37                                     origin=(0.5, 0.5), zfact=1)
38             # 绘制变形后的几何形状
39             ax.add_geometries([scaled_geometry], ccrs.PlateCarree(),
40                              facecolor='lightblue', edgecolor='black')
41     # 添加标题
42     ax.set_title("Deformed Map Example", fontsize=16)
43 
44     # 添加经纬度网格
45     ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)
46 
47     # 显示地图
48     plt.show()
49 
50 if __name__ == "__main__":
51     create_deformed_map()

 

三、关联地图

1.概念

  关联地图是一种用于可视化数据之间关联关系的图形化工具。它通过节点(或称为顶点)和边(或称为连线)来表示数据实体及其之间的关系。例如,在社交网络中,人可以作为节点,而人与人之间的友谊关系可以通过边来表示。

2.特点

 

  • 直观性:通过图形化的展示方式,能够直观地呈现数据之间的关系,便于用户快速理解复杂的数据结构。
  • 灵活性:可以处理不同类型的数据和关系,适用于多种场景,如社交网络分析、知识图谱、供应链管理等。
  • 动态性:可以根据需要动态地添加、删除节点和边,方便对数据进行实时更新和调整。
  • 层次性:可以通过层次结构来展示数据的层级关系,例如在组织架构图中,不同层级的部门和人员可以通过关联地图清晰地表示出来。

 

3.应用场景

 

  • 社交网络分析:分析人与人之间的关系,如朋友关系、同事关系等,帮助研究社交网络的结构和传播路径。
  • 知识图谱:构建知识体系,将概念、实体及其关系进行可视化展示,用于教育、科研等领域。
  • 供应链管理:展示供应商、生产商、分销商和零售商之间的关系,优化供应链流程。
  • 项目管理:展示项目中的任务、资源和人员之间的关系,帮助项目管理者更好地协调和监控项目进度。
  • 网络安全:分析网络中的设备、用户和数据流之间的关系,识别潜在的安全威胁。

 

4.代码实现

 

 1 import networkx as nx
 2 import matplotlib.pyplot as plt
 3 import community as community_louvain
 4 import numpy as np  # 显式导入 numpy
 5 
 6 # 创建一个空的无向图
 7 G = nx.Graph()
 8 
 9 # 添加节点和边,同时为边添加权重
10 nodes = ["A", "B", "C", "D", "E", "F", "G", "H"]
11 edges = [
12     ("A", "B", 3), ("A", "C", 2), ("B", "C", 1),
13     ("C", "D", 4), ("D", "E", 2), ("E", "F", 3),
14     ("F", "G", 1), ("G", "H", 2), ("H", "A", 3),
15     ("B", "D", 1), ("C", "E", 2), ("F", "H", 1)
16 ]
17 
18 # 添加节点
19 G.add_nodes_from(nodes)
20 
21 # 添加带权重的边
22 for u, v, w in edges:
23     G.add_edge(u, v, weight=w)
24 
25 # 社区检测(Louvain 算法)
26 partition = community_louvain.best_partition(G)
27 community_colors = [partition[node] for node in G.nodes()]
28 
29 # 节点大小和颜色
30 node_sizes = [1000 + 100 * G.degree(node) for node in G.nodes()]
31 node_colors = [plt.cm.tab10(color) for color in community_colors]
32 
33 # 边的权重映射为边的粗细
34 edge_weights = [G[u][v]['weight'] for u, v in G.edges()]
35 edge_colors = [plt.cm.Blues(weight / max(edge_weights)) for weight in edge_weights]
36 
37 # 设置字体和负号显示
38 plt.rcParams['font.sans-serif'] = ['SimHei']
39 
40 # 绘制关联地图
41 plt.figure(figsize=(12, 8))
42 pos = nx.spring_layout(G, k=0.5, iterations=20)  # 力导向布局
43 nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=node_colors, alpha=0.8)
44 nx.draw_networkx_labels(G, pos, font_size=12, font_color='white')
45 nx.draw_networkx_edges(G, pos, width=edge_weights, edge_color=edge_colors, alpha=0.7)
46 plt.title("关联地图示例", fontsize=16)
47 plt.axis('off')  # 关闭坐标轴
48 plt.show()

 

 

四、气泡地图

1.概念

  气泡地图是一种结合了地图空间定位功能与气泡图数据可视化特性的图表类型,通过在地理地图上叠加气泡符号,直观展示地理区域内数据的分布特征、数值大小及多维度关系。其核心是利用地图背景的空间参照性,结合气泡的视觉属性(大小、颜色、位置等),将抽象的数据转化为直观的地理空间分布,便于用户快速识别数据模式、热点区域及差异对比。

2.特点

 

  • 直观易懂:通过气泡的大小直观地展示数据的大小,便于观察者快速理解不同地区之间的数据差异。
  • 展示多维数据:可以同时展示多个维度的数据,例如通过气泡的大小表示数量,通过颜色表示类别。
  • 突出重点:能够清晰地展示某些地区或类别的数据重要性。
  • 互动性强:适合在交互式图表中使用,用户可以通过点击或悬浮查看具体信息。
  • 局限性: 当气泡过多或过大时,可能会相互遮盖,影响数据展示; 人眼对面积的感知不如长度精准,可能导致数据的视觉误差。

 

3.应用场景

 

  • 城市规划:展示城市各区域的人口密度、商业设施数量。
  • 环境科学:映射空气质量指数(AQI)、污染物浓度的空间分布。
  • 商业分析:标注门店分布及销售额、用户活跃度热点。
  • 公共卫生:可视化疾病病例数、疫苗接种率的地理差异。
  • 经济分析:展示各国的GDP、投资金额等。
  • 旅游分析:按地区可视化游客数量或旅游收入。

 

4.代码实现

 

 1 import plotly.express as px
 2 
 3 # 使用Plotly内置的全球GDP和人口数据
 4 df = px.data.gapminder().query("year == 2007")
 5 
 6 # 创建气泡地图
 7 fig = px.scatter_geo(
 8     df,
 9     locations="iso_alpha",  # 国家ISO代码
10     color="continent",      # 按洲着色
11     hover_name="country",   # 悬停显示国家名称
12     size="pop",             # 气泡大小表示人口
13     projection="natural earth",  # 自然地球投影
14     title="2007年全球人口分布与GDP",
15     size_max=60,            # 最大气泡尺寸
16     template="plotly_white" # 使用简洁模板
17 )
18 
19 # 自定义布局
20 fig.update_layout(
21     font=dict(family="SimHei"),  # 确保中文显示
22     geo=dict(
23         showcoastlines=True,
24         coastlinecolor="Black",
25         showland=True,
26         landcolor="LightGray",
27         showocean=True,
28         oceancolor="LightBlue",
29         showlakes=True,
30         lakecolor="Blue",
31         showrivers=True,
32         rivercolor="Blue",
33         projection_type="natural earth"  # 自然地球投影
34     ),
35     margin=dict(l=20, r=20, t=50, b=20),  # 调整边距
36 )
37 
38 # 显示地图
39 fig.show()

 五、晕渲地图

1.概念

  晕渲地图是一种通过模拟地形起伏特征来反映实际地形的地图,它利用色调的明暗变化来得到地貌的立体感。这种地图的立体感较强,但不能在图上确定任意点的精确高程和坡度,常与等高线法和分层设色法相配合,用于小比例尺地图和专题地图上的地貌显示。

2.特点

  • 立体感强:通过光影效果展示地形的高低起伏,给人以强烈的视觉立体感。
  • 表现力丰富:易于理解,能够直观地展示地形特征。
  • 缺乏精确数据:虽然立体感强,但不能提供具体的高程和坡度数据。
  • 艺术性:晕渲地图通常具有一定的艺术性,可以增强地图的美观度和吸引力。

3.应用场景

  • 地形分析:用于展示地形的高低起伏,帮助进行地形分析。
  • 地图制作:在地图集中使用,增加地图的视觉效果和吸引力。
  • 教育和展示:用于教育和展示,帮助观众更好地理解地形特征。
  • 规划和设计:在城市规划和设计中,用于展示地形对规划的影响。

4.代码实现

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 from mpl_toolkits.mplot3d import Axes3D
 4 
 5 # 创建数据
 6 x = np.linspace(-5, 5, 100)
 7 y = np.linspace(-5, 5, 100)
 8 X, Y = np.meshgrid(x, y)
 9 Z = np.sin(np.sqrt(X**2 + Y**2))
10 
11 # 绘制晕渲地图
12 fig = plt.figure()
13 ax = fig.add_subplot(111, projection='3d')
14 ax.plot_surface(X, Y, Z, cmap='viridis')
15 
16 # 添加颜色条
17 m = plt.cm.ScalarMappable(cmap='viridis')
18 m.set_array(Z)
19 plt.colorbar(m, ax=ax, shrink=0.5, aspect=5)
20 
21 plt.title('Hillshade Map Example')
22 plt.show()

 六、等值线地图

1.概念

  等值线地图是以相等数值点的连线(即等值线)表示连续分布且逐渐变化的数量特征的一种图型 。通过在平面上投影数值相等各点联成的曲线,来呈现被摄物体的外形和大小等信息。比如地形等高线图是连接海拔高度相等的点形成的线来展示地形起伏;等温线图是连接温度相等的点来反映温度分布。

2.特点

  • 直观展示分布:能清晰呈现数据在空间上的连续变化,可一眼看出数据的高值区和低值区位置,以及数据的渐变情况 。例如在等高线地图上,能直观看到山脉、平原等地形的高低分布。
  • 反映变化趋势:通过观察等值线的走向和形状,可轻松分析数据变化趋势,预测不同区域的数据发展态势。如在等温线图中,等温线的弯曲方向和疏密程度能反映温度的变化趋势和地区温差情况。
  • 体现变化速率:等值线的疏密程度反映数据变化快慢 ,等值线越密集,数据变化越剧烈;等值线越稀疏,数据变化相对平缓。比如等高线密集处表示地势陡峭,稀疏处地势平缓。
  • 相对量性质:等值线在很大程度上是对量的变化的概括,具有相对量性质,多数不能用于直接量测 。像气温、蒸发、径流等通过等值线表示时,更多是体现其相对的变化规律。

3.应用场景

  • 气象领域:等温线、等压线、等降水量线等广泛应用于预测天气变化、分析气候特征 。比如通过等降水量线图,能直观了解不同地区的降水分布,为农业生产、水利建设等提供重要依据;等压线图可帮助分析气压系统,预测天气系统的移动和演变。
  • 地质勘探:绘制等重力线、等磁力线等,助力地质学家分析地下地质构造,寻找矿产资源 。例如等重力线图能反映地下岩石密度差异,进而推断可能存在的矿体位置。
  • 海洋学研究:利用等盐度线、等水温线等研究海洋环境变化 。科学家可借此了解海洋中盐度、水温的分布规律,为海洋生态保护、海洋资源开发等提供支持。
  • 地形地貌研究:等高线图是表现地势起伏和地貌结构的重要工具,可用于判断山地、盆地、山脊、山谷等地形类型,还能根据等高线的疏密和图形判断斜坡坡度等 。在工程建设、户外运动等方面,也可借助等高线图进行线路规划、场地评估等。
  • 农业生产:结合等高线地形图反映的地貌类型、地势起伏、坡度陡缓,再综合气候和水源条件,可因地制宜地进行农林牧副渔业布局 。比如坡度较缓、水源充足的区域适合发展种植业;山区可发展林业、畜牧业等。
  • 城市规划与建设:在交通线路规划中,可依据等高线判断地形坡度,选择坡度平缓、线路较短的路线,尽量少占农田、少建桥梁,避开断崖、陡坡等,降低施工难度和成本 ;在确定水库库址与大坝坝址时,可借助等高线选择河谷、山谷地区或口袋形的洼地、小盆地等库容大、集水面积大的区域 。

4.代码实现

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 # 创建地形数据
 5 # 我们使用一个二维的高斯分布函数来模拟地形的海拔高度
 6 x = np.linspace(-3.0, 3.0, 100)
 7 y = np.linspace(-3.0, 3.0, 100)
 8 X, Y = np.meshgrid(x, y)
 9 Z = np.exp(-(X**2 + Y**2))
10 
11 # 为了模拟更真实的地形,我们可以添加一些随机噪声
12 np.random.seed(0)
13 noise = np.random.normal(0, 0.005, Z.shape)
14 Z += noise
15 
16 # 绘制等高线地图
17 plt.figure(figsize=(10, 6))
18 contour = plt.contour(X, Y, Z, colors='black')  # 绘制等高线
19 plt.clabel(contour, inline=True, fontsize=8)  # 为等高线添加高度标签
20 
21 # 填充等高线之间的区域
22 contourf = plt.contourf(X, Y, Z, cmap='terrain')  # 使用地形颜色映射
23 plt.colorbar(contourf)  # 显示颜色条
24 
25 # 设置字体和负号显示
26 plt.rcParams['font.sans-serif'] = ['SimHei']
27 plt.rcParams['axes.unicode_minus'] = False
28 
29 # 添加标题和坐标轴标签
30 plt.title('虚构地形的海拔高度')
31 plt.xlabel('经度')
32 plt.ylabel('纬度')
33 
34 # 显示绘制结果
35 plt.show()

七、总结

地图类型概念特点优点缺点应用场景
蜂窝热力地图 以正六边形网格对地理空间进行离散化处理,统计每个网格内的数据点数量或汇总值,并通过颜色渐变表示数值大小 通过六边形网格聚合数据,减少点重叠,保留空间分布特征 1. 空间利用率高,减少点重叠。2. 视觉上更接近连续表面。3. 支持多种统计函数 1. 网格大小选择敏感,过大丢失细节,过小产生空洞。2. 边缘区域蜂窝可能不完整,导致统计偏差。3. 不适用于精确位置展示 人口密度分析、交通流量监测、商业热点分布
变形地图 按照各区域属性值大小调整地理区域的几何面积,突出属性值大的区域 在保持地理区域空间邻接关系和基本形状的基础上,按属性值缩放区域面积 1. 直观展示统计变量差异,突出小区域。2. 多种变形算法适应不同需求 1. 严重变形可能导致地理识别困难。2. 相邻区域可能出现重叠或空隙。3. 不适用于需要精确距离或面积的分析 经济数据对比、人口分布展示、选举结果可视化
关联地图 通过线条、箭头等元素展示地理要素间的连接关系 用曲线连接地理实体,可编码多种信息,如线宽表示强度、颜色区分类型 1. 直观显示空间交互模式。2. 可同时编码多种维度信息。3. 曲线设计减少视觉重叠 1. 连接线过多时会产生“意大利面条效应”。2. 长距离连接可能跨越无关区域造成误解。3. 精确数值比较困难 交通网络、贸易路线、人口迁徙、通信网络
气泡地图 用气泡位置表示地理坐标,大小和颜色表示属性值 气泡大小和颜色可表示不同维度的数据 1. 直观比较不同位置的数值大小。2. 可同时展示定量和分类信息。3. 支持动态展示时间变化 1. 气泡重叠时难以识别。2. 小气泡可能被忽略。3. 面积比较不如长度直观 城市经济指标对比、灾害分布、资源储量可视化
晕渲地图 通过颜色的深浅变化来表示地形的起伏或数据的高低 颜色深浅表示地形或数据的高低,形成渐变效果 1. 直观展示地形起伏或数据变化趋势。. 视觉效果美观,易于理解 1. 对颜色渐变的准确性要求较高。2. 不适用于数据差异较小的场景 地形分析、地质数据可视化、环境数据展示
等值线地图 用连续曲线连接数值相等的点,展示数据的空间渐变趋势 通过等值线展示数据的连续变化,如等高线、等温线 1. 清晰展示数据的渐变特征。2. 适用于连续型地理数据 1. 等值线间距需匹配数据波动范围。2. 填充颜色需区分明显 地形海拔分析、气温分布、气压变化、环境污染扩散模拟
posted @ 2025-05-24 15:17  柒柒冉  Views(103)  Comments(0)    收藏  举报