Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时pyecharts 诞生了。
本篇文章是我通过看了官方文档学习过后加上自己的理解与突发奇想写的,目的与大家一起学习探讨,不对的大家可以留言我我好及时改正,也是自己一个学习的过程,欢迎大家交流。
下面是pyecharts的特性(——从官网复制来的——)
✨ 特性
- 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
- 囊括了 30+ 种常见图表,应有尽有
- 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
- 可轻松集成至 Flask,Django 等主流 Web 框架
- 高度灵活的配置项,可轻松搭配出精美的图表
- 详细的文档和示例,帮助开发者更快的上手项目
- 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
简要的介绍过后就开始我们的正题啦!首先绘制第一个图表,大家首先需要导入pyecharts模块
from pyecharts.charts import Bar
这是绘制柱状图的,绘制折线图(Line),饼图(Pie),地图(Map)还有各种乱七八糟的图我会再后面发布。下面是创建一个柱状图:
bar = Bar() #图像初始化,得到bar空表
bar.add_xaxis(['键盘','耳机','鼠标','显示器']) #只是添加X轴的数据
bar.add_yaxis("店铺一",[200,100,300,50]) #添加Y轴的数据,数据里面必须是数字
bar.add_yaxis("店铺二",[300,100,400,80]) #添加第二条Y轴的数据
bar.render_notebook() #渲染成丘比特内置的图表,方便数据分析
这便是绘制的第一个柱状图啦,bar.render()如果是这样render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件,也可以传入路径参数,如 bar.render("mycharts.html"),(开头我可能显得有点啰嗦,大佬们多多担待)
pyecharts 所有方法均支持链式调用。
#链式操作
bar5=(
Bar()
.add_xaxis(['键盘','耳机','鼠标','显示器'])
.add_yaxis("店铺一",[200,100,300,10])
.add_yaxis("店铺二",[500,50,400,80])
)
bar5.render_notebook()
接着是使用 options 配置项,在 pyecharts 中,一切皆 Options。(可以让你的图表更加炫酷,并且能够互动的地方变多),同样的需要导入配置包。
from pyecharts import options as opts
全局配置项 ,可通过 set_global_opts 方法设置
bar5.set_global_opts(datazoom_opts=opts.DataZoomOpts(),
visualmap_opts=opts.VisualMapOpts(),
legend_opts=opts.LegendOpts(is_show = False),
title_opts=opts.TitleOpts(title="万豪的小店",subtitle="商品销售量"),
toolbox_opts=opts.ToolboxOpts()
)
bar5.render_notebook()
datazoom_opts=opts.DataZoomOpts()——区域缩放配置项,就是下面那个可以拖动缩放的条状物visualmap_opts=opts.VisualMapOpts()——视觉映射配置项,左下角那个五颜六色可以拖动的条
legend_opts=opts.LegendOpts(is_show = False),图例配置项,就是下面这个玩意,False就让它不显示了
title_opts=opts.TitleOpts(title="万豪的小店",subtitle="商品销售量")——标题配置项
toolbox_opts=opts.ToolboxOpts()——工具箱配置项,右上角那个(我感觉最有用的,可以让你的柱状图瞬间变成折线图哦)
pyecharts的虚假数据库这个给大家先讲下我们后面会经常使用,虚假数据库,也需要导包如下:
from pyecharts.faker import Faker as fk
每一次生成为7个,下面为循环生成5*7 35个随机数据
for i in range(5):
print(Faker.choose())
#Faker.choose是一个函数,从里面随机选择
下面是图形的水平颠倒
bar5=(
Bar()
.add_xaxis(['键盘','耳机','鼠标','显示器'])
.add_yaxis("店铺一",Faker.values(),stack="K")
.add_yaxis("店铺二",Faker.values(),stack="K")
.add_yaxis("店铺三",Faker.values(),stack="C")
.add_yaxis("店铺四",Faker.values(),stack="C")
.add_yaxis("店铺五",Faker.values(),stack="L")
.add_yaxis("店铺六",Faker.values(),stack="L")
.add_yaxis("店铺七",Faker.values(),stack="L")
.reversal_axis()#水平颠倒 若启用工具盒,可能出现堆叠超出数据的情况
)
bar5.render_notebook()
stack的意思是名字相同的数据叠加到一起,例如店铺一与店铺二的stack为“K”,则他们俩的数据叠加到一起。
下面是绘制一年的降水量,蒸发量与平均温度一个比较好看的表
month_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"] precipitation_data = [2.5,6.0,8.0,30.2,31.4,87.6,150.4,170.8,60.2,31.1,10.5,10.1] #降水量数据 evaporation_data = [2.0,4.9,7.0,23.2,25.6,76.7,135.6,162.2,32.6,20.0,6.4,3.3] #蒸发量数据 average_temperature = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] #平均温度
bar = (
Bar()
.add_xaxis(month_data)
.add_yaxis("降水量",precipitation_data)
.add_yaxis("蒸发量",evaporation_data)
.extend_axis(
yaxis=opts.AxisOpts(
name="温度",
type_="value",
min_=0,
max_=25,
interval=5,
axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
)
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
yaxis_opts=opts.AxisOpts(
name="水量",
type_="value",
min_=0,
max_=250,
interval=50,
axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
)
line = (
Line()
.add_xaxis(month_data)
.add_yaxis(
series_name="平均温度",
yaxis_index=1,
y_axis=average_temperature,
label_opts=opts.LabelOpts(is_show=False),
)
)
bar.overlap(line).render_notebook()
.extend_axis,添加右边Y轴的数据,看看应该就能看懂,很简单
tooltip_opts=opts.TooltipOpts(),让鼠标所在的位置X轴有目标,就是那跟横着的虚线。
axispointer_opts=opts.AxisPointerOpts(),让鼠标所在的位置Y轴有目标,就是那块竖着的方块。
yaxis_opts=opts.AxisOpts(),设置左边Y轴的数据
剩下的大家可以自己去探索一下什么功能,就是一些配置都很简单,至此,pyecharts的条形统计图的绘制大都可以实现啦,下面是我整理的pyecharts Bar()的官网所有问题解决形式 ,到官网大家搜索都能找到
Bar_rotate_xaxis_label 旋转X轴标签 解决标签名字过长的问题
Bar_xyaxis_name 更改X轴 Y轴的名称
Bar_base_with_custom_background_image 添加背景图
Bar_chart_display_delay 柱状图动画延迟
Bar_datazoom 垂直与水平拖动条
Bar_histogram_color 直方图(颜色区分)
Bar_yaxis_formatter 给Y轴添加表达数据
Bar_markpoint_type 指定类型
Bar_custom_bar_color 自定义柱状颜色
Bar_different_series_gap 不同柱间距离
Bar_markline_type 精准标记
这次的分享比较简单,感觉有用的同学可以点个赞!后面我会持续更新pyecharts折线图,饼图,地图还有各种乱七八糟的图,大家可以关注我哟



