目录:
Pyecharts 是基于百度开源可视化库 ECharts 的 Python 数据可视化库,允许开发者使用Python语言轻松生成各种类型、高度交互式的图表。图表可以轻松渲染为独立的HTML文件,方便分享和嵌入网页。
安装依赖:
$ pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple
如需绘制地图(如中国各省地图),需要额外安装对应的地图文件包:
$ pip install echarts-china-provinces-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple
$ pip install echarts-china-cities-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple
创建图形的流程非常固定:
柱状图常用于比较不同类别的数据。
from pyecharts.charts import Bar
from pyecharts import options as opts
x_data = ['一月', '二月', '三月', '四月', '五月']
y_data = [10, 20, 15, 25, 30]
# 创建实例
bar = Bar()
# 添加数据
bar.add_xaxis(x_data)
bar.add_yaxis("销售额", y_data)
# 设置全局配置项(标题、坐标轴名称等)
bar.set_global_opts(
title_opts=opts.TitleOpts(title="月度销售额柱状图"),
xaxis_opts=opts.AxisOpts(name="月份"),
yaxis_opts=opts.AxisOpts(name="销售额(万元)"),
)
# 渲染为 HTML 文件
bar.render("sales_bar_chart.html")
与上面函数式调用创建图表不同,下面示例演示了链式调用创建图表。
from pyecharts.charts import Line
from pyecharts import options as opts
# 链式调用创建折线图
line = (
# 创建实例
Line()
# 添加数据
.add_xaxis(["周一", "周二", "周三", "周四", "周五", "周六", "周日"])
.add_yaxis("线上销量", [150, 230, 224, 218, 135, 147, 260])
.add_yaxis("门店销量", [120, 132, 101, 134, 90, 230, 110])
# 设置配置
.set_global_opts(
title_opts=opts.TitleOpts(title="周销售趋势", subtitle="单位:件"),
toolbox_opts=opts.ToolboxOpts(), # 显示工具箱,可保存为图片等
)
)
# 渲染为 HTML 文件
line.render("weekly_sales_line.html")
饼图适合展示数据的占比关系。
from pyecharts.charts import Pie
from pyecharts import options as opts
# 数据格式为 (名称, 数值) 的列表
data = [("苹果", 40), ("香蕉", 30), ("橙子", 20), ("葡萄", 10)]
pie = (
# 创建实例
Pie()
# 添加数据
.add(
series_name="水果销量占比",
data_pair=data,
radius=["35%", "55%"], # 设置内外半径,形成环形图
)
# 设置配置
.set_global_opts(
title_opts=opts.TitleOpts(title="水果销量饼图"),
legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"), # 图例左置
)
.set_series_opts(
label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)") # 标签显示格式:名称: 数值 (百分比)
)
)
pie.render("fruit_pie_chart.html")
如下示例: 创建一个中国地图,指定省份显示数量和不同的颜色。
from pyecharts import options as opts
from pyecharts.charts import Map
# 准备数据
provinces = ["广东省", "北京市", "上海市", "江苏省", "浙江省", "四川省"]
values = [10430, 2151, 2423, 8055, 5508, 8302] # 示例数值
# 创建地图实例并设置(链式调用)
china_map = (
Map(init_opts=opts.InitOpts(width="90vw", height="90vh"))
.add("示例数据", [list(z) for z in zip(provinces, values)], "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="中国地图示例"),
visualmap_opts=opts.VisualMapOpts(
max_=12000, # 视觉映射最大值
min_=2000, # 视觉映射最小值
is_piecewise=True, # 启用分段式显示
# 可以自定义分段区间和颜色
pieces=[
{"min": 2000, "max": 5000, "label": "2000-5000", "color": "#FFE4E1"},
{"min": 5000, "max": 8000, "label": "5000-8000", "color": "#FF7F50"},
{"min": 8000, "max": 12000, "label": "8000-12000", "color": "#DC143C"},
]
)
)
)
china_map.render("china_map.html") # 生成 HTML 文件

↶ 返回首页 ↶