def echarts_map(province,data,title = '主标题',subtitle = '副标题',label = '图例'):
"""
province:传入省份List
data:传入各省对应的数据List
title:主标题
subtitle:副标题
label:图例
"""
map_ = Map(
init_opts=opts.InitOpts(
bg_color='#080b30', # 设置背景颜色
theme='dark' # 设置主题
# width='980px', # 设置图的宽度
# height='800px' # 设置图的高度
)
)
map_.add(label,[list(i) for i in zip(province,data)])
map_.set_global_opts(
# 标题设置
title_opts=opts.TitleOpts(
title=title, # 主标题
subtitle=subtitle, # 副标题
pos_left='center', # 标题展示位置
title_textstyle_opts=dict(color='#fff') # 设置标题字体颜色
),
# 图例设置
legend_opts=opts.LegendOpts(
is_show=True, # 是否显示图例
pos_left='right', # 图例显示位置
pos_top='3%', #图例距离顶部的距离
orient='horizontal' # 图例水平布局
),
visualmap_opts = opts.VisualMapOpts(max_ = int(data.max()),is_piecewise = False)
)
return map_.render_notebook()
写完函数之后:
change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',
ascending = False)
echarts_map(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'
,subtitle = '成交金额在全国各地分布情况',label = '成交金额')
其实更新版本的pyecharts中,还可以画3D地图:
def map3d_with_bar3d(province,data_lis,title = '主标题',subtitle = '副标题',label = '图例'):
"""
province:传入省份的List
data_lis:传入省份对应的数据的List
title:主标题
subtitle:副标题
label:图例
"""
data_dict = {'黑龙江': [127.9688, 45.368], '上海': [121.4648, 31.2891],
'内蒙古': [110.3467, 41.4899], '吉林': [125.8154, 44.2584],
'辽宁': [123.1238, 42.1216], '河北': [114.4995, 38.1006],
'天津': [117.4219, 39.4189], '山西': [112.3352, 37.9413],
'陕西': [109.1162, 34.2004], '甘肃': [103.5901, 36.3043],
'宁夏': [106.3586, 38.1775], '青海': [101.4038, 36.8207],
'新疆': [87.9236, 43.5883], '西藏': [91.11, 29.97],
'四川': [103.9526, 30.7617], '重庆': [108.384366, 30.439702],
'山东': [117.1582, 36.8701], '河南': [113.4668, 34.6234],
'江苏': [118.8062, 31.9208], '安徽': [117.29, 32.0581],
'湖北': [114.3896, 30.6628], '浙江': [119.5313, 29.8773],
'福建': [119.4543, 25.9222], '江西': [116.0046, 28.6633],
'湖南': [113.0823, 28.2568], '贵州': [106.6992, 26.7682],
'广西': [108.479, 23.1152], '海南': [110.3893, 19.8516],
'广东': [113.28064, 23.125177], '北京': [116.405289, 39.904987],
'云南': [102.71225, 25.040609], '香港': [114.165460, 22.275340],
'澳门': [113.549130, 22.198750], '台湾': [121.5200760, 25.0307240]}
for item in [list(z) for z in zip(province, data_lis)]:
data_dict[item[0]].append(item[1])
example_data = list(zip(data_dict.keys(),data_dict.values()))
map_3d = Map3D(
init_opts=opts.InitOpts(
bg_color='#080b30', # 设置背景颜色
theme='dark', # 设置主题
# width='1200px', # 设置图的宽度
# height='1000px' # 设置图的高度
)
)
map_3d.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(5,101,123)",
opacity=1,
border_width=0.8,
border_color="rgb(62,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="#fff",
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,
)
)
map_3d.add(
series_name=label,
data_pair=example_data,
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];}"
),
),
)
map_3d.set_global_opts(
# 标题设置
title_opts=opts.TitleOpts(
title= title, # 主标题
subtitle= subtitle, # 副标题
pos_left='center', # 标题展示位置
title_textstyle_opts=dict(color='#fff') # 设置标题字体颜色
),
# 图例设置
legend_opts=opts.LegendOpts(
is_show=True, # 是否显示图例
pos_left='right', # 图例显示位置
pos_top='3%', #图例距离顶部的距离
orient='horizontal' # 图例水平布局
),
)
return map_3d.render_notebook()
change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',
ascending = False)
map3d_with_bar3d(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'
,subtitle = '成交金额在全国各地分布情况',label = '成交金额')
其实3D图,未必是中国地图,还可以其他地图;上面也未必是柱状图,也可以是热力图,流向图,散点图,线状图等等。
可以参考:
pyecharts终于更新啦!| pyecharts-Map3D画3D立体地图_philpy_used的博客-CSDN博客_pyecharts画3d图
数据分析可视化(四)|Pyecharts制作地图的几种方法评析 - 云+社区 - 腾讯云
我觉得还可以利用他来画OD图哈哈哈。
可以查看官网更新:
pyecharts - A Python Echarts Plotting Library built with love.
参考链接: 工作台 - Heywhale.com