其他
数据可视化 | 太酷了!用 Python 绘制3D地理分布图
目录
一、前言
二、用 Python 做地理可视化
绘制平面地理分布图
绘制 3D 地理分布图
三、总结
本文共4877个字,阅读大约需要15分钟,欢迎指正!
Part1前言
Part2用 Python 做地理可视化
pyecharts
就是其中之一,也是我们接下来要使用的地理可视化 Python 库。pyecharts
库,尽管在词云绘制方面不尽人意,但在传统数据可视化和地理数据可视化方面绝对是一个非常强大的工具。下面我们就使用它来演示如何制作地理分布图。1绘制平面地理分布图
import pandas as pd
# 2021各省份GDP总量.xlsx 是从国家统计局获取的2021各省GDP数据 Excel 表
data = pd.read_excel('2021各省份GDP总量.xlsx')
data.head(5) # 输出前五行数据
pyecharts
所需要的二维列表格式,转换数据格式的代码如下:Province = list(GDP['地区'])
gdp = list(GDP['2021年GDP总量(亿元)'])
Value_list = [list(z) for z in zip(Province,gdp)]
Value_list[:3] # 展示前三个
# [['广东', 124369.7], ['江苏', 116364.2], ['山东', 83095.9]]
📌小贴士:
考虑到易用性, pyecharts
能够识别到省级的地区名称均是简称,例如北京、内蒙古,而不是北京市、内蒙古自治区。
pyecharts
根据前面读取的数据制作地理分布图,代码如下:from pyecharts.charts import Map # 导入地图模块
from pyecharts import options as opts
# 变量 c 是我们结果数据的保存路径
# 除此之外就没有什么实际意义了,这样写是为了方便写注释,便于梳理代码结构
c = (
Map(init_opts=opts.InitOpts(width="1600px", height="900px")) # 设置图的长和宽
.set_global_opts(
# 地理分布图的标题,默认放置在图的左上方
title_opts=opts.TitleOpts(title="2021 年全国各省级地区 GDP 总量地理分布图"),
visualmap_opts=opts.VisualMapOpts(
is_show = True, # 是否显示图例
max_=130000, # 数值区间最大值, 最好根据数据的范围定义
min_=0, # 数值区间最小值
split_number=13, # 分成 13 个区间
# 下面是简单设置图例的参数
range_text = ['GDP 总量区间:', '数据来源于国家统计局'], # 图例上/下方的的描述性文字
range_color = ['#F5F5DC', '#8B2323'], # 不同数值的颜色显示,只需要提供两个极端的颜色,系统会自动补齐中间的过渡色
# 需要注意颜色的顺序,应该将底数值对应的颜色放在前面。
is_calculable = False,
item_width = 40, # 颜色图例的长
item_height = 20, # 颜色图例的宽
is_piecewise=True,# 定义图例为分段型,为False时
)
)
.add("", Value_list, maptype="china")# 导入需要的数据(前面转换换过的),添加地图,我们使用中国地图
.render("海洋统计_new.html") # .render() 用于保存数据可视化结果为 Html
)
http://www.ku51.net/rgbhex.html
2绘制 3D 地理分布图
from pyecharts.charts import *
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType, ChartType
# 地区数据柱显示的位置(经纬度坐标点)
dicts_all = {'广东': [113.28064, 23.125177], '北京': [116.405289, 39.904987],
'湖北': [114.3896, 30.6628], '浙江': [120.21032, 30.246687],
'福建': [119.4543, 25.9222], '江西': [116.0046, 28.6633],
'黑龙江': [127.9688, 45.368], '上海': [121.4648, 31.2891],
'内蒙古': [110.3467, 41.4899], '吉林': [125.8154, 44.2584],
'辽宁': [123.1238, 42.1216], '河北': [114.4995, 38.1006],
'四川': [103.9526, 30.7617], '重庆': [108.384366, 30.439702],
'山东': [117.1582, 36.8701], '河南': [113.4668, 34.6234],
'江苏': [118.8062, 31.9208], '安徽': [117.29, 32.0581],
'新疆': [87.9236, 43.5883], '西藏': [91.11, 29.97],
'湖南': [113.0823, 28.2568], '贵州': [106.6992, 26.7682],
'广西': [108.479, 23.1152], '海南': [110.3893, 19.8516],
'天津': [117.4219, 39.4189], '山西': [112.3352, 37.9413],
'陕西': [109.1162, 34.2004], '甘肃': [103.5901, 36.3043],
'宁夏': [106.3586, 38.1775], '青海': [101.4038, 36.8207],
'云南': [102.71225, 25.040609]}
# 转换数据,为数据提供所需格式的数据,
# 所需数据格式为 {'地区名1':[经度1,纬度1,数值1], '地区名2':……}
for item in [list(z) for z in zip(GDP['地区'], GDP['2021年GDP总量(亿元)'])]:
dicts_all[item[0]].append(item[1])
(Map3D(init_opts=opts.InitOpts(width="1800px", height="1000px"))
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(70,130,180)",# 通过控制 R.G.B 三原色的权重来调整地图底色
# 如何自定义颜色可以浏览此网站:http://www.ku51.net/rgbhex.html
opacity=1,
border_width=0.8,
border_color="rgb(162,215,213)"), # 各省边界线的颜色
map3d_label=opts.Map3DLabelOpts(
is_show=False,
formatter=JsCode("function(data){return data.name + " " + data.value[2];}")),
emphasis_label_opts=opts.LabelOpts(
is_show=False,
color="#FFDAB9",
font_size=10,
background_color="rgba(0,23,11,0)"),
light_opts=opts.Map3DLightOpts(
main_color="#fff",
main_intensity=1.2,
main_shadow_quality="high",
is_main_shadow=False,
main_beta=10,
ambient_intensity=0.3))
.add(
series_name="",
data_pair=list(zip(list(dicts_all.keys()), list(dicts_all.values()))),
type_=ChartType.BAR3D,
bar_size=1,
shading="lambert",
label_opts=opts.LabelOpts(
is_show=True,
formatter=JsCode("function(data){return data.name + ' ' + data.value[2];}")))
.set_global_opts(title_opts=opts.TitleOpts(
title="2021 年全国各省级地区 GDP 总量地理分布柱状图") # 图形的标题
)).render("地理分布3D柱状图.html") # 可视化图形结果的保存路径(含文件名,需要是 html 文件)
Part3总结
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
文 | 两米哥
欢迎扫描👇二维码添加关注