当python遇上echarts(一)了解基本知识

pyecharts

一、简介

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
简单来说,pyecharts就是echarts的python接口,方便python用户开发。当然,精通Html,JavaScript的同学,可以直接使用echarts。

二、优势

python中,有很多的可视化模块,比如matplotlib,seaborn,plotly,pyecharts。pyecharts如何从中脱颖而出呢。先看张图片
当python遇上echarts(一)了解基本知识
很多很多精美的模板和示例,做起图来有方便又简单。

三、示例

到底有多简单呢?来绘制个柱状图

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')

当python遇上echarts(一)了解基本知识

相信比你想象的要简单不少吧。接下来,一起学习这个神奇的module

四、基本思路

不管绘制什么图,步骤是差不多的

  1. 创建对象
  2. 为对象添加参数和数据
  3. 生成html文件或者在jyputer_notebook中显示或者生成图片。
    tips:jyputer_notebook真是个好东西,不仅支持markdown,而且能直接运行代码,展示运行效果,给看的人一种交互式的体验,快要毕业的兄弟们,用这个东西写论文,岂不是爽歪歪。
    看看图片:
    当python遇上echarts(一)了解基本知识

五、绘制柱状图

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()

当python遇上echarts(一)了解基本知识
通过比较,其实,绘制图的关键在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

当python遇上echarts(一)了解基本知识

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 (二)绘制基本图表

上一篇:Python绘制地理图表之可视化神器pyecharts(二)


下一篇:太酷炫了,我用python画出了北上广深的地铁路线动态图