Pyecharts 是一个用于生成 Echarts 图表的类库,由 Python 实现接口,其追根溯源可到百度曾开源的一个数据可视化 JS 库 Echarts。与我们平常用的 Matplotlib 不同,Echarts 图表不仅美观靓丽,而且是动态可交互的,API 调用也很方便,几行代码就能实现图形渲染 ... 如此美丽的绘图工具自是令人喜爱。然而,Pyecharts 也有缺点,比如官方文档目录置于左侧栏,未全汉化且标题无法折叠,查找不便;许多 API 无参数说明,仅给出实例,甚至无注释 ...... 当然,事物的发展是前进性和曲折性的统一,有压力才有动力,毕竟是开源的。
即便如此,Pyecharts 的效果依旧令人感到惊艳,值得去了解和尝试,本文将简要展示其中的一种 —— 饼图 (Pie)。
pip 安装,在命令行输入:
pip install pyecharts
若太慢,就清华源安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
首先自定义一些数据用于展示:
## 导包 —— 饼状图 Pie
import pyecharts.options as opts
from pyecharts.charts import Pie
## 自定义示例数据
# 月份
month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
# 平均温度
temp = [1.8, 2.5, 3.8, 7.5, 9.6, 15.4, 25.0, 29.4, 28.3, 11.3, 5.4, 1.9]
# 平均降水量
rain = [0.1, 4.6, 5.8, 14.2, 16.3, 25.3, 34.5, 45.2, 41.0, 16.3, 9.9, 4.1]
# 数据打包
data_pair_temp = [list(data) for data in zip(month, temp)] # month 相当于自变量, temp 相当于因变量
data_pari_rain = [list(data) for data in zip(month, rain)] # month 相当于自变量, rain 相当于因变量
# 数据整理(没必要)
#data_pair.sort(key=lambda x: x[1])
注意数据需要打包成嵌套列表的形式,例如:
>>> data_pair_temp
[['Jan', 1.8],
['Feb', 2.5],
['Mar', 3.8],
['Apr', 7.5],
['May', 9.6],
['Jun', 15.4],
['Jul', 25.0],
['Aug', 29.4],
['Sep', 28.3],
['Oct', 11.3],
['Nov', 5.4],
['Dec', 1.9]]
通过实例化 Pie 对象、调用 add() 添加基本参数、调用 set_global_opts () 设置全局参数、调用 set_series_opts () 设置系列参数、调用 render() 渲染图像文件这些基本步骤,就可以绘制出一个简单的图形。以下绘制了一个 basic 饼图:
# basic
# 可以赋予对象,也可不必,因为渲染是通过 .render() 语句完成的
p = (
Pie() # 实例化
.add(
series_name="平均温度", # 系列名称
data_pair=data_pair_temp,# 馈入数据
radius="35%", # 饼图半径比例
center=["50%", "50%"], # 饼图中心坐标
label_opts=opts.LabelOpts(is_show=False, position="center"), # 标签位置
)
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False)) # 不显示图示
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 标签颜色
.render("Pie_basic.html") # 渲染文件及其名称
#.render_notebook()
)
注意,保存的是 html 文件,将其放在浏览器即可打开:
事实上,可设置的选项很丰富,虽然不能一一示范,但可以简要展示更多参数设置。以下绘制了一个 rosetype 的饼图:
## rosetype
# 可以赋予对象,也可不必,因为渲染是通过 .render() 语句完成的
(
# 实例化 Pie 对象
Pie(init_opts=opts.InitOpts(width="800px", height="600px", bg_color="#2c343c")) # 画布尺寸 + 背景颜色
.add( ## 图形设置
series_name="平均降水", # 系列名称
data_pair=data_pari_rain, # 馈入数据
rosetype="radius", # 饼图类型
radius="35%", # 饼图半径比例
center=["50%", "50%"], # 饼图中心坐标
label_opts=opts.LabelOpts(is_show=False, position="center"), # 标签显示与位置设置
)
.set_global_opts( ## 全局设置
title_opts=opts.TitleOpts(
title="全年气候模拟数据", # 标题
pos_left="center", # 标题水平位置
pos_top="50", # 标题与画布顶端距离
title_textstyle_opts=opts.TextStyleOpts(color="#fff"), # 标题颜色
),
legend_opts=opts.LegendOpts(is_show=False), # 不显示图示
)
.set_series_opts( ## 系列设置
label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.1)"), # 标签颜色 (RGB+透明度)
)
.render("Pie_rosetype.html")
)
参考文献:
官方文档之饼图 Pie:Document
Github:https://github.com/pyecharts/pyecharts