地理特征类的数据可视化
特点:将地理区域划分为蜂窝状的六边形网格,每个网格内的颜色表示该区域内的数据密度或聚合值。适用于展示大量点数据的分布情况,避免点重叠问题。应用场景:人口密度分布、交通流量、犯罪热点等。Python实现(使用matplotlib 的 hexbin):结果:划分为规则的六边形蜂窝网格。每个蜂窝代表一个数据聚合区域。图中有大量离散的数据点,这些点分布在平面上。数据点密集的区域表示高值区域,稀疏的区域表示
一、蜂窝热力地图(Hexbin Heatmap)
特点:将地理区域划分为蜂窝状的六边形网格,每个网格内的颜色表示该区域内的数据密度或聚合值。适用于展示大量点数据的分布情况,避免点重叠问题。
应用场景:人口密度分布、交通流量、犯罪热点等。
Python实现(使用matplotlib 的 hexbin):
import matplotlib.pyplot as plt
import numpy as np
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
plt.hexbin(x, y, gridsize=30, cmap='Blues')
plt.colorbar()
plt.show()
结果:
划分为规则的六边形蜂窝网格。每个蜂窝代表一个数据聚合区域。图中有大量离散的数据点,这些点分布在平面上。数据点密集的区域表示高值区域,稀疏的区域表示低值区域。每个蜂窝内统计了落入该区域的点数。蜂窝的颜色或填充强度表示该区域内的点数密度。使用渐变色表示密度,例如从浅蓝色(低密度)到深蓝色(高密度)。颜色越深,表示该区域内的数据点越多。
二、变形地图(Cartogram)
特点:通过扭曲地图的形状来反映特定的数据指标,如人口、GDP等。保持地理边界的同时,调整区域大小以表示数据差异。
应用场景:展示各国或地区的经济、人口等指标的相对大小。
Python实现(使用 matplotlib 和 Basemap):
# 变形地图
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
# 创建地图对象
fig, ax = plt.subplots()
m = Basemap(projection='merc', llcrnrlat=-60, urcrnrlat=80, llcrnrlon=-180, urcrnrlon=180, resolution='c')
# 绘制国家边界
m.drawcoastlines()
m.drawcountries()
countries = ['USA', 'China', 'India']
values = [331000000, 1440000000, 1390000000]
colors = ['blue', 'green', 'red']
for country, value, color in zip(countries, values, colors):
lons = [-122.4194, 130.4167, 78.9629]
lats = [37.7749, 35.8617, 20.5937]
m.scatter(lons, lats, s=value / 1e6, c=color, alpha=0.5)
plt.show()
结果:
三、关联地图(Choropleth Map)
特点:使用不同颜色或阴影表示地理区域内的数据值,颜色深浅与数值大小相关。适用于展示分类或连续型数据的空间分布。
应用场景:选举结果、疾病传播、收入水平等。
Python实现(使用Basemap):
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
# 创建地图实例
plt.figure(figsize=(12, 8))
m = Basemap(projection='merc', llcrnrlat=-60, urcrnrlat=65,
llcrnrlon=-180, urcrnrlon=180, resolution='c')
m.drawcoastlines()
m.drawcountries()
# 定义城市坐标和连接
cities = {
'New York': (-74.0, 40.7),
'London': (-0.1, 51.5),
'Tokyo': (139.7, 35.7),
'Sydney': (151.2, -33.9),
'Dubai': (55.3, 25.3)
}
connections = [
('New York', 'London', 200),
('London', 'Dubai', 150),
('Dubai', 'Sydney', 180),
('Sydney', 'Tokyo', 120),
('Tokyo', 'New York', 220)
]
# 绘制连接线
for (city1, city2, weight) in connections:
x1, y1 = m(*cities[city1][::-1])
x2, y2 = m(*cities[city2][::-1])
m.drawgreatcircle(cities[city1][0], cities[city1][1],
cities[city2][0], cities[city2][1],
linewidth=weight/50, color='blue', alpha=0.6)
# 标记城市
for city, (lon, lat) in cities.items():
x, y = m(lon, lat)
m.plot(x, y, 'ro', markersize=8)
plt.text(x, y, city, fontsize=10, ha='right')
plt.title('Flight Connection Map with Traffic Volume')
plt.show()
结果:
展示了全球主要城市之间的航班连接情况。以世界地图为底图,标注了主要城市的位置。用蓝色线条表示航班路线,线条的粗细或颜色可能代表航班的频率或重要性。主要航线(如从纽约到伦敦)用粗线或醒目颜色表示,次要航线用细线表示。红色圆点标记主要城市的位置,如纽约、伦敦、迪拜等。部分城市标注了名称,便于识别。城市之间通过线条连接,表示航班直达或中转关系。
四、气泡地图(Bubble Map)
特点:在地图上使用不同大小和颜色的气泡表示数据点,气泡的大小通常与数值大小相关。适用于展示点状数据的数量、类别等信息。
应用场景:商店位置、旅游景点、地震震级等。
Python:
from pyecharts.charts import Map
from pyecharts import options as opts
# 准备数据
data = [("北京", 95.1), ("上海", 23.2), ("广州", 43.3), ("深圳", 66.4), ("成都", 88.5)]
# 创建气泡地图
map = Map()
map.add("气泡地图示例", data, "china") # 'china' 为地图类型
map.set_global_opts(
title_opts=opts.TitleOpts(title="气泡地图示例"),
visualmap_opts=opts.VisualMapOpts(max_=100, type_="size") # 设置视觉映射,type_="size" 表示气泡大小映射数据大小
)
# 渲染生成 html 文件并在浏览器中打开
map.render('气泡地图.html')
结果:
展示了中国地图的轮廓,标注了多个省份的名称。地图以地理区域为底图,清晰展示了各省的位置和边界。每个省份或城市用一个气泡(圆形或椭圆形)表示。气泡的大小通常与某个指标的值成正比,例如人口、经济总量、销售额等。气泡可能用不同颜色区分类别或数据范围。红色气泡表示高值,蓝色气泡表示低值。气泡内部或旁边可能标注具体数值或名称,便于识别。气泡的位置与地理区域对应,直观展示数据的地理分布。
总结

更多推荐
所有评论(0)