记录python数据可视化pyecharts库基本使用及样板

简介

pyecharts 是一个用于生成 Echarts 图表的类库。

echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化。pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。

使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。

版本

当前的最新V1版本,仅支持 Python3.6+,使用的时候要注意一下。

支持的图表种类

官方支持一下六个大类的图表,共计几十种的样式,官方都有详细的示例。

官方实例

from pyecharts.charts import

Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.render()
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
#bar.render_notebook()#在Jupyter notebook使用这条语句可以即时渲染效果
render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件

如果用的是Jupyter notebook,可以在最后用bar.render_notebook()语句,这样就可以直接将图表渲染在电脑屏幕上。


官方实例

样板 - 折线图

展示基金每日收益,源数据如下图:


基金每日收益

样板代码如下
#全局设置有很多参数需要参考官方的文档和例子
#官方的图表例子:https://pyecharts.org/#/zh-cn/basic_charts
#官方的全局配置:https://pyecharts.org/#/zh-cn/global_options
from pyecharts.charts import Line
from pyecharts import options as opts
import numpy as np
def loadCSVfile(): #定义加载CSV文件数据的函数
tmp = np.loadtxt("/home/yhjbox/Desktop/pyecharts-code/B.csv", dtype=np.str, delimiter=",")
data = tmp[1:50,1].astype(np.float)#加载前50行数据部分
date = tmp[1:50,0]
return data,date #返回array类型的数据
a=loadCSVfile()[0].tolist()#收益
b=loadCSVfile()[1].tolist()#日期
line= (
Line()
.add_xaxis(b)
.add_yaxis("基金A",a,is_smooth=True,is_symbol_show=False)
.set_global_opts(title_opts=opts.TitleOpts(title=" 基金A每日万分收益"),#生成图的全局设置,
yaxis_opts=opts.AxisOpts(name="我是Y轴",interval=0.1,is_scale=True)#设置y轴的参数,interval为刻度间隔,is_scale表示是否从0开始
)
)
#line.render()
line.render_notebook()

运行效果为:


效果图.png

样板 - Map-VisualMap(连续型)

展示全国各省市的数量分布,源数据如下图:


数量分布.png

样板代码如下:

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.globals import ChartType, SymbolType
import numpy as np
def loadCSVfile():
tmp = np.loadtxt("/home/yhjbox/Desktop/pyecharts-code/fans.csv", dtype=np.str, delimiter=",",encoding='gbk')
province = tmp[0:,0].astype(np.str)#加载数据部分
num = tmp[0:,1].astype(np.int)
#label = tmp[1:,0]#加载类别标签部分
return province,num #返回array类型的数据
a=loadCSVfile()[0].tolist()#省份
b=loadCSVfile()[1].tolist()#粉丝数量
map= (
Map()
.add("粉丝数量", [list(z) for z in zip(a, b)], "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"),
visualmap_opts=opts.VisualMapOpts(max_=200),
)
)
map.render_notebook()

运行效果如下,而且是可以动态的展示:


Map-VisualMap效果