pyecharts
一、简介
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
简单来说,pyecharts就是echarts的python接口,方便python用户开发。当然,精通Html,JavaScript的同学,可以直接使用echarts。
二、优势
python中,有很多的可视化模块,比如matplotlib,seaborn,plotly,pyecharts。pyecharts如何从中脱颖而出呢。先看张图片
很多很多精美的模板和示例,做起图来有方便又简单。
三、示例
到底有多简单呢?来绘制个柱状图
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.options.global_options import AxisOpts
x = ['餐饮','娱乐','交通','保养','衣服']
y1= [1000,500,100,5000,5000]
y2= [2000,1000,100,20,30]
bar = Bar()
bar.add_xaxis(xaxis_data = x)
#第一个参数是图例的名称
bar.add_yaxis(series_name = 'zhang某人',y_axis = y1)
bar.add_yaxis(series_name = 'fan某人',y_axis = y2)
#添加options
bar.set_global_opts(title_opts=opts.TitleOpts(title = 'zhang某人和fan某人一月开支'))
#生成HTML文件
bar.render('我的第一个echarts图.html')
相信比你想象的要简单不少吧。接下来,一起学习这个神奇的module
四、基本思路
不管绘制什么图,步骤是差不多的
- 创建对象
- 为对象添加参数和数据
- 生成html文件或者在jyputer_notebook中显示或者生成图片。
tips:jyputer_notebook真是个好东西,不仅支持markdown,而且能直接运行代码,展示运行效果,给看的人一种交互式的体验,快要毕业的兄弟们,用这个东西写论文,岂不是爽歪歪。
看看图片:
五、绘制柱状图
1、前期准备
安装pyecharts:pip install pyecharts
清华镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pyecharts
代码实现
from pyecharts import options as opts
#准备绘制饼图需要的数据,需要x轴和y轴的数据,数据格式为列表
x = ['餐饮','娱乐','交通','保养','衣服']
y= [1000,500,2000,1000,1000]
#创建对象,可以加一些参数,下面这个参数的意思是图的大小,宽800个像素,高600个像素
bar = Bar(init_opts = opts.InitOpts(width = '800px',height = '600px'))
#添加数据,注意添加y轴数据的时候,必须设置series_name参数,表示图例的名称
bar.add_xaxis(xaxis_data = x)
bar.add_yaxis(series_name = 'zhang某人',y_axis = y)
#添加参数
bar.set_global_opts(title_opts = opts.TitleOpts(title = 'zhang某人的幸福生活'))
#生成html文件,这里是相对路径,文件保存在代码所在目录下
bar.render('第一个bar图.html')
可以说,整个代码是非常的简单,就是那几个步骤,创建对象,添加数据,设置参数,生成文件。
在绘制不同的图的过程中,其实,也就其中一个步骤有些不同,接下来,再来绘制一个折线图,看看我们该关注的重点是那一步,然后再重点学习。
绘制折线图
#折线图是Line
from pyecharts.charts import Line
#引入options,为图表添加参数
from pyecharts import options as opts
#折线图的数据类型跟柱状图一模一样
x = ['餐饮','娱乐','交通','保养','衣服']
y= [1000,500,2000,1000,1000]
#创建对象,可以加一些参数,下面这个参数的意思是图的大小,宽800个像素,高600个像素
line = Line(init_opts = opts.InitOpts(width = '800px',height = '600px'))
#添加数据,注意添加y轴数据的时候,必须设置series_name参数,表示图例的名称
line.add_xaxis(xaxis_data = x)
line.add_yaxis(series_name = 'zhang某人',y_axis = y)
#添加参数,title_opts设置图的标题
line.set_global_opts(title_opts = opts.TitleOpts(title = 'zhang某人的幸福生活'))
line.render_notebook()
通过比较,其实,绘制图的关键在options,也就是添加图表的参数,比如设置图的大小,标题,图例,文字倾斜,区域缩放,坐标轴互换等。下面,总结一下常用的options。
配置项options
官方文档都这么说:使用 options 配置项,在 pyecharts 中,一切皆 Options!!!
InitOpts:初始化配置项
在创建对象时
bar = Bar(init_opts = opts.InitOpts())
line = Line(init_opts = opts.InitOpts(
#图表宽度
width = '800px',
#图表高度
height = '600px',
#网页标题
page_title = '我的网页我做主',
#图表主题,有好多种主题
#LIGHT,DARK,CHALK,INFOGRAPHIC,ESSOS,MACARONS,PURPLE_PASSION,ROMA,ROMANTIC,SHINE,VINTAGE,WALDEN,WESTEROS
theme = ThemeType.ROMANTIC ,
#背景颜色,英文单词
bg_color = 'purple',
#远程 js host,如不设置默认为 https://assets.pyecharts.org/assets/"
#如果想要在不联网的情况下展示图表,需将echarts.min.js下载至本地。然后传入其路径
js_host = 'js/',
#
))
这些都是可选参数,根据需要自己添加
标题配置项 TitleOpts
title_opts设置在全局变量中
line.set_global_opts(title_opts = opts.TitleOpts('填这'))
title_opts = opts.TitleOpts(
title = 'zhang某人的幸福生活',
#跳转到当前目录下的另一文件,参数为文件相对路径
title_link = '',
#可选参数有self和blank,默认是blank,意思是新窗口跳转到title_link指定的文件,self表示本窗口打开文件
title_target = 'self',
#subtitle是副标题,设置的方法跟title一样
subtitle = '今天不上班',
subtitle_link='',
subtitle_target='',
#title组件在容器中的位置
# title 组件离容器左侧的距离。
# left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
# 也可以是 'left', 'center', 'right'。
# 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
pos_left = '2%',
pos_top = '10%',
#同样,也可以设置pos_right,pos_bottom
#主副标题之间的间距,参数为整数
item_gap= 100,
#主副标题字样,
# font_style可选:'normal','italic','oblique'
title_textstyle_opts=opts.TextStyleOpts(color='blue',font_style='oblique',font_size=30)
)
区域缩放配置项 DataZoomOpts
支持区域缩放
datazoom_opts = opts.DataZoomOpts(
#是否显示组件
is_show=True,
#组件类型,可选slider和inside,注意type后面有小下划线
type_ = 'slider',
#组件的开始和结束范围
range_start = 20,
range_end = 80,
#布局方式,横向还是竖向
orient = 'vertical',
#设置组件位置,同样也是上下左右都可以设置
pos_right = '2%'
)
图例配置项 LegendOpts
bar.set_global_opts(legend_opts = opts.LegendOpts())
legend_opts = opts.LegendOpts(
# 'plain':普通图例。 'scroll':可滚动翻页的图例。当图例数量较多时可以使用。
type_='plain',
#是否显示组件
is_show = True,
#图例的对齐方式,可选auto,left,right
align = 'left',
#位置,上下左右皆可设置
pos_top = '20%',
#横向纵向,horizontal和vertical
orient = 'vertical',
#图例的icon,可选'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
legend_icon = 'pin'
)
提示框配置项 TooltipOpts
tooltip_opts = opts.TooltipOpts(
is_show = True,
# 触发类型。可选:
# 'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
# 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
# 'none': 什么都不触发
trigger = 'axis',
# 提示框触发的条件,可选:
# 'mousemove': 鼠标移动时触发。
# 'click': 鼠标点击时触发。
# 'mousemove|click': 同时鼠标移动和点击时触发。
# 'none': 不在 'mousemove' 或 'click' 时触发,
trigger_on = 'mousemove/click',
# 指示器类型。可选
# 'line':直线指示器
# 'shadow':阴影指示器
# 'none':无指示器
# 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
axis_pointer_type = 'shadow'
)
坐标轴配置项 AxisOpts
x轴也是一样配置
yaxis_opts = opts.AxisOpts(
# 坐标轴类型。可选:
# 'value': 数值轴,适用于连续数据。
# 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
# 'time': 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,
# 例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。
# 'log' 对数轴。适用于对数数据
type_ = 'value',
#是否显示坐标轴
is_show = True,
#是否反向坐标轴
is_inverse = True,
#坐标轴最小刻度值,
min_ = 400,
#最大刻度值
max_ = 1600
)
工具箱配置项 ToolBoxOpts
toolbox_opts = opts.ToolboxOpts(
is_show = True,
orient = 'vertical',
pos_right ='10%',
feature = opts.ToolBoxFeatureOpts(
#保存图片按钮,False为不显示
save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(is_show = True),
#还原项
restore = opts.ToolBoxFeatureRestoreOpts(is_show=False),
#数据视图工具
data_view=opts.ToolBoxFeatureDataViewOpts(is_show = False),
#数据区域缩放
data_zoom=opts.ToolBoxFeatureDataZoomOpts(is_show=False),
#动态类型切换
magic_type=opts.ToolBoxFeatureMagicTypeOpts(is_show=False),
# 选框组件的控制按钮,这个参数比较特殊,没有is_show参数,只能通过列表选择需要添加的按钮,一个也不要的话,直接传空列表
#rect','polygon','lineX','lineY','keep','clear'
brush = opts.ToolBoxFeatureBrushOpts(type_= [])
)
)
Tips
pyecharts 所有方法均支持链式调用。习惯链式调用的同学可以试一下
官方网站
下一节,一起绘制简单图表
当python遇上echarts (二)绘制基本图表