前言
前段时间,领导突然把我叫到办公室…
公司高层要看看上半年度项目组业绩数据分析,准备下吧!可以嘛?
没办法,硬着头皮也要上!一口答应,保证完成任务!
说到数据分析,肯定离不开数据的可视化,毕竟图表比冷冰冰的数字更加直观,Boss只想一眼就能看出趋势和结论。
今天我们就聊一聊 pyecharts 中几种常用的图表。
安装
首先我们需要安装下pyecharts,通过pip指令直接安装即可。
pip install pyecharts
安装完成后, 可通过pip list指令查看python安装的库列表。查看pyecharts安装版本和是否安装成功。
导入模块
老规矩,为了故事的顺利发展,我们可以先导入本文所需的模块。
from pyecharts.charts import Bar
from pyecharts.charts import Pie
from pyecharts.charts import Line
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.globals import SymbolType
from pyecharts.charts import Grid
from pyecharts.charts import WordCloud
from pyecharts.charts import Map
import random
注:以下图表生成都是在在 Jupyter Notebook 环境中实现。
柱状图
平时我们看到最多的就是柱状图了,pyecharts 生成柱状图也是非常简单。直接填入 x 轴和 y 轴的数据就行。
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
data_china = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
data_russia = [1.6, 5.4, 9.3, 28.4, 22.7, 60.7, 162.6, 199.2, 56.7, 43.8, 3.0, 4.9]
bar = Bar()
bar.add_xaxis(x)
bar.add_yaxis("降水量", data_china)
bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 降水示例"))
bar.rerender_notebook()
run运行程序后,就会得到如下所示柱状图:
当然pyecharts还支持链式调用,实现的功能一致,代码如下:
bar = (
Bar()
.add_xaxis(x)
.add_yaxis('china', data_china)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 降水示例"))
)
bar.render_notebook()
此外,还可以在一个柱状图中添加多个 y 轴记录,实现多个柱状对比,只需调用多一次 add_yaxis 即可。
bar = (
Bar()
.add_xaxis(x)
.add_yaxis('china', data_china)
.add_yaxis("sussia", data_russia)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 多柱状图"))
)
bar.render_notebook()
有时候,柱状图太高不方便看,我们还可以将 x 轴和 y 轴互换,生成横向的柱状图。多柱状图和 xy 轴互换不冲突,可叠加使用。
bar = (
Bar()
.add_xaxis(x)
.add_yaxis('china', data_china)
.add_yaxis('russia', data_russia)
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 翻转 XY 轴"))
)
bar.render_notebook()
饼状图
饼状图也是使用频率很高的图表之一,尤其是适用于百分比类的图,可以很直观的看出来各个类别所占据总体份额的比例。
pie = (
Pie()
.add("", [list(z) for z in zip(x, data_china)])
.set_global_opts(title_opts=opts.TitleOpts(title="饼图示例"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
pie.render_notebook()
圆环饼状图
pie = (
Pie(init_opts=opts.InitOpts(width="600px", height="400px"))
.add(
series_name=