一、Pyecharts官方文档
- Pyecharts官方文档:
链接: https://pyecharts.org/#/zh-cn/intro - pyecharts-gallery,示例:
链接: https://gallery.pyecharts.org/#/README
二、Pyecharts图表6大配置项(全局配置项)
Pyecharts绘图的代码结构如下图所示:
代码如下:
import pyecharts.options as opts
from pyecharts.charts import Bar
bar = (
Bar( init_opts=opts.InitOpts( ) )# 实例化柱状图。初始化配置项:确定画布大小,渲染风格,
#图表主题,图表背景颜色等。
# ====全局配置项=====
.set_global_opts(
title_opts=opts.TitleOpts(title="条形图",subtitle="副标题" ), # 1.标题配置项
legend_opts=opts.LegendOpts( ), # 2.图例配置项
#visualmap_opts=opts.VisualMapOpts( ), # 3.视觉映射配置项
datazoom_opts=opts.DataZoomOpts( ), # 4.区域缩放配置项
tooltip_opts=opts.TooltipOpts( ), # 5.提示框配置项
toolbox_opts=opts.ToolboxOpts( is_show=True), # 6.工具箱配置项
# ---- 更多配置参数请转至 官方文档 配置项->全局配置项 ----
)
# ======系列配置项======
.set_series_opts(
itemstyle_opts=opts.ItemStyleOpts(border_color='black'), # 图元样式配置项
textstyle_opts=opts.TextStyleOpts( color='blue', font_size=14 ) # 文字样式配置项:文字颜色、大小等。
)
# ======X、Y轴配置项======
.add_xaxis(["一季度","二季度","三季度","四季度"]) # X轴数据及配置
.add_yaxis(series_name="商家1", y_axis=[4,7,3,9]) # Y轴数据及配置
.add_yaxis(series_name="商家2", y_axis=[9,3,5,2])
)
#bar.render("test.html") # 生成html文件
bar.render_notebook() #将图表直接渲染到Jupyter Notebook中
1. 标题配置项 TitleOpts
官方文档链接: 标题配置项 TitleOpts
title=“我是标题”, 主标题
subtitle=“我是副标题”,副标题
2. 图例配置项 LegendOpts
is__show -> bool 默认True,是否显示图例。
3. 视觉映射配置项 VisualMapOpts
官方文档:链接: 视觉映射配置项
is_show -> bool,默认true, 是否显示视觉映射组件。
min_=0,指定 visualMapPiecewise 组件的最小值。
max_=50,最大值
range_text -> list 默认[‘low’,‘hight’],两端文本。
is_piecewise -> bool 默认False,是否将组件转换为分段型(默认为连续型)。
split_number -> int 默认5,分段型中分割的段数,在设置为分段型时生效。
4. 区域缩放配置项 DataZoomOpts
is_show=True,是否显示 组件。
5. 提示框配置项 TooltipOpts
官方文档:提示框配置项 TooltipOpts
is_show=True,# 是否显示提示框组件。
formatter -> str 模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。
在 trigger 为 ‘axis’ 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量 {a}, {b}, {c}, {d} 在不同图表类型下代表数据含义为:
(1) 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)。
(2) 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)。
(3) 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)。
(4) 饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
6. 工具箱配置项 ToolbookOpts
is_show=True 默认True,指定是否显示右侧实用工具箱
三、简单示例-柱状图
1.安装Pyecharts
2. 绘制柱状图
代码如下:
from pyecharts.charts import Bar
from pyecharts import options as opts
bar=(
Bar(init_opts=opts.InitOpts( width='800px',height='600px' )) #画布大小
.add_xaxis(["A","B","C"]) #x轴数据
.add_yaxis("数量",[5,20,36]) #y轴数据
.set_global_opts(title_opts=opts.TitleOpts(title="示例柱状图"),) #设置全局选项
)
#bar.render("bar.html") #图表渲染为一个HTML文件
bar.render_notebook() #将图表直接渲染到Jupyter Notebook中
代码截图如下:
绘制的柱状图如下:
3. 高清图片保存设置、柱状图的其他参数配置
(1)高清图片保存设置
在工具箱配置项 ToolbookOpts中添加一行代码:
toolbox_opts=opts.ToolboxOpts(is_show=True, pos_top=“top”, pos_left=“right”, feature={“saveAsImage”: {“pixelRatio”:10} ,“dataZoom”:{“yAxisIndex”: “none”},“restore”: {}}) )
其中:“pixelRatio”:10,表示分辨率大小,数字越大,分辨率越高。
代码如下:
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
bar=(
Bar(init_opts=opts.InitOpts( width='800px',height='600px' )) #1.实例化柱状图,设置画布大小
.add_xaxis(["A","B","C"]) #X轴数据
.add_yaxis("数量",[5,20,36]) #Y轴数据
.set_global_opts(title_opts=opts.TitleOpts(title="示例柱状图"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=18,color='red'), #设置x轴标签字体
axisline_opts=opts.AxisLineOpts(is_show=True), #保留x轴边框
splitline_opts=opts.SplitLineOpts(is_show=False) #去除垂直网格线
), #2. x轴配置
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_family='simsun',font_size=16,font_weight='bold'),#设置y轴标签字体
axisline_opts=opts.AxisLineOpts(is_show=True, #保留y轴边框
linestyle_opts=opts.LineStyleOpts(width=2,color='pink') ),
splitline_opts=opts.SplitLineOpts(is_show=True) #保留水平网格线
), #3. y轴配置
legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(font_size=20,color='green')), #4. 图例设置
toolbox_opts=opts.ToolboxOpts(is_show=True, pos_top="top", pos_left="right", #5. 工具箱配置项:设置输出高清图片
feature={"saveAsImage": {"pixelRatio":10} ,"dataZoom":{"yAxisIndex": "none"},"restore": {}}) )
.set_series_opts(label_opts=opts.LabelOpts(font_size=20,font_family='simsun',color='blue') ) #6. 设置数据标签字体大小
)
#bar.render("bar.html")
bar.render_notebook()
运行程序后,在图片的右上角点击“保存图片”,此时保存的图片是高清图片。
(2)柱状图的其他参数设置
柱状图的参数设置如上图代码所示;运行代码后,保存的高清柱状图如下图所示:
四、柱状图示例二
代码如下:
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
import pyecharts.options as opts
x=["一季度","二季度","三季度","四季度"]
y1=[20,30,10,50]
y2=[10,40,30,60]
c = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(x)
.add_yaxis("商家A", y1)
.add_yaxis("商家B", y2)
.set_global_opts(
title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "我也是通过 dict 进行配置的"},
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16,color='green',font_family='simsun',
font_weight='bold',rotate=45)),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=14)),
legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(font_size=20,color='green')), #图例
toolbox_opts=opts.ToolboxOpts(is_show=True, pos_top="top", pos_left="right",
feature={"saveAsImage": {"pixelRatio":10} ,"dataZoom":{"yAxisIndex": "none"},"restore": {}}) ) #设置输出高清图片
.set_series_opts(label_opts=opts.LabelOpts(font_size=20,font_family='simsun',color='#8552a1') ) #设置数据标签字体大小
#.render("bar_base_dict_config.html")
)
c.render_notebook()
绘图效果如下:
五、地图可视化—地理图表(Geo,Map,Bmap)
1. 安装相应的地图模块
根据 pyecharts使用教程 :
自从 v0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。下面介绍如何安装。
(1)、全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图。
(2)、中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区。
(3)、中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市。
(4)、中国县区级地图: echarts-china-counties-pypkg (4.1MB):2882 个中国县·区。
(5)、中国区域地图: echarts-china-misc-pypkg (148KB):11 个中国区域地图,比如华南、华北。
安装代码如下:
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg
2.中国地图
from pyecharts.charts import Map
province_distribution = {'河南省': 45.23, '北京市': 37.56, '辽宁省': 12, '广西壮族自治区': 100,"西藏自治区":50 }
provice = list(province_distribution.keys())
values = list(province_distribution.values())
map = Map()
map.add("商家", [list(z) for z in zip(province_distribution.keys(),province_distribution.values())],'china')
map.set_global_opts(title_opts=opts.TitleOpts(title="中国地图"),
visualmap_opts=opts.VisualMapOpts())
map.render_notebook()
3.广西地图
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
city=["南宁市","北海市","百色市"]
values=[10,40,50]
c = (
Map()
.add("人口数", [list(z) for z in zip(city,values)], "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-广西地图"),
visualmap_opts=opts.VisualMapOpts(max_=50,is_show=True), #设置视觉映射选项,最大值为50
toolbox_opts=opts.ToolboxOpts(is_show=True, pos_top="top", pos_left="right",
feature={"saveAsImage": {"pixelRatio":10} ,"dataZoom":{"yAxisIndex": "none"},"restore": {}}) #设置保存高清图片
)
#.render("guangxi.html")
)
c.render_notebook()
4.南宁地图(辖区、县份)
import pyecharts.options as opts
from pyecharts.charts import Map
quxian = ['横县', '武鸣区','江南区']
values = [3, 5,8]
c=(
Map()
.add(
series_name="南宁人口密度",
maptype="南宁",
data_pair=[list(z)for z in zip(quxian,values)],
# name_map=quxian,
is_map_symbol_show=False,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="南宁人口密度",
),
tooltip_opts=opts.TooltipOpts(
trigger="item", formatter="{b}<br/>{c} (p / km2)"
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=10,
range_text=["高", "低"],
is_calculable=True,
range_color=["lightskyblue", "yellow", "orangered"],
),
toolbox_opts=opts.ToolboxOpts(is_show=True,
pos_top="top",
pos_left="right",
feature={"saveAsImage": {"pixelRatio":10} ,"dataZoom":{"yAxisIndex": "none"},"restore": {}}) #输出高清图片
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
#.render("nanning.html")
)
c.render_notebook()
5.各省具备培养软件工程专业硕士研究生资格的高校数量
用Map地图可视化全国软件工程专业的高校数量,具体的数据如下:
将上表数据做成数据集:软件工程.csv
绘图代码如下:
import pandas as pd #pandas是强大的数据处理库
from pyecharts.charts import Map
from pyecharts import options as opts
data = pd.read_csv('软件工程.csv',encoding='gbk')
province = list(data["省份"])
gdp = list(data["数量"])
province_list = [list(z) for z in zip(province,gdp)]
c = (
Map(init_opts=opts.InitOpts(width="1000px", height="600px")) #可切换主题
.set_global_opts(
title_opts=opts.TitleOpts(title="软件工程专业院校在全国的分布"),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=20,
range_text = ['院校数量区间:', ''], #分区间
is_piecewise=True, #定义图例为分段型,默认为连续的图例
pos_top= "middle", #视觉映射组件放在中间
pos_left="left", #视觉映射组件放在左边
orient="vertical",
split_number=10 #分成10个区间
)
)
.add("软件工程",province_list,maptype="china") #绘制中国地图
#.render("软件工程.html")
)
c.render_notebook() #图表渲染到jupyter中。
绘图效果如下:
参考资料:
- Python_第四篇 可视化(7)_Pyecharts参数配置
https://blog.csdn.net/ab19920904/article/details/107184667/ - Python pyecharts 快速入门
https://blog.csdn.net/m0_60495479/article/details/128690869 - Python基于Pyecharts 1.X的世界地图、省、市、县(区)地图、热力图和飞行航线图
https://blog.csdn.net/zerow__/article/details/128920456
4.详解python 利用 pyecharts 画地图(热力图)(世界地图,省市地图,区县地图)、动态流向图
https://blog.csdn.net/qq_39451578/article/details/104372597
5.Pyecharts - 动态地图 geo()/ map() - 安装与用法详解
https://blog.csdn.net/weixin_40683253/article/details/87859970
6.python中国地图可视化(附带各省数据和源码)
https://huaweicloud.csdn.net/638088dfdacf622b8df89c3e.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTQxMjIxNSwiZXhwIjoxNzE5NDY0MzQwLCJpYXQiOjE3MTg4NTk1NDAsInVzZXJuYW1lIjoiY2hlbmRlbmd5aTIifQ.dVBmyM43Wu-AD79lv5VB8MnLeLKewkWwfnmz4RGMCr0