Python pyecharts绘制条形图详解


Posted in Python onApril 02, 2022

一、简介

关于具体详情,请咨询:pyecharts官网

pyecharts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生了。Echarts是用JS来写的,而我们使用pyecharts则可以使用Python来调用里面的API。

优点:

简洁的 API 设计,使用如丝滑般流畅,支持链式调用

囊括了 30+ 种常见图表,应有尽有

支持主流 Notebook环境,Jupyter Notebook 和 JupyterLab

可轻松集成至 Flask,Django 等主流 Web 框架

高度灵活的配置项,可轻松搭配出精美的图表

详细的文档和示例,帮助开发者更快的上手项目

多达 400+地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持。

二、整理数据

安装:

pip install pyecharts

1、配置主题

Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) # 第一种
Bar({"theme": ThemeType.MACARONS}) # 第二种

Python pyecharts绘制条形图详解

Python pyecharts绘制条形图详解

2、柱状图 Bar - Bar_base_dict_config

import os
from matplotlib import pyplot as plt 
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(list1)
    .add_yaxis("票价", list2, stack="stack1", category_gap="50%")
    .add_yaxis("人次", list3,   stack="stack1",category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title='中国电影票房',subtitle='按地区比较票价与人次')
    )
)
# c.render("cnbo1.html") # 生成html图片
# os.system("cnbo01.html")  # 执行完代码直接跳出来图片
c.render_notebook() # 直接在代码区域展示图片

Python pyecharts绘制条形图详解

3、样例数据 Faker.choose()

使用这段代码会随机调用系统的样例参数:

.add_xaxis(Faker.choose())

Python pyecharts绘制条形图详解

from pyecharts.faker import Faker

list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()

c = (
    Bar({"theme": ThemeType.MACARONS})  ### 配置好看的图表主题!!!
    .add_xaxis(Faker.choose())    ### 这句话表示使用随机的后台样例数据
    .add_yaxis("票价", list2, stack="stack1", category_gap="50%")
    .add_yaxis("人次", list3,   stack="stack1",category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts={"text":"样例数据","subtext":"使用Faker.choose()"}
    )
)
c.render("cnbo1.html") # 生成html图片
# os.system("cnbo1.html")  # 执行完代码直接跳出来图片
c.render_notebook() # 直接在代码区域展示图片

4、滚动条 Bar - Bar_datazoom_slider

datazoom_opts=opts.DataZoomOpts()

表示可以滑动的滚动条:

list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(list1)
    .add_yaxis("票价", list2, stack="stack1", category_gap="50%")
    .add_yaxis("人次", list3,   stack="stack1",category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title='中国电影票房',subtitle='按地区比较票价与人次'),
         brush_opts=opts.BrushOpts() ,### 使用这个可以使图片的右上角多出来一些工具
        datazoom_opts=opts.DataZoomOpts(), ### 可以使最下面多出滚动条
    )
)
c.render("cnbo2.html") # 生成html图片
# os.system("cnbo01.html")  # 执行完代码直接跳出来图片
c.render_notebook() # 直接在代码区域展示图片

Python pyecharts绘制条形图详解

5、鼠标移动效果 Bar - Bar_datazoom_inside

根据鼠标来放大与缩小的效果:

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar()
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("商家A", Faker.days_values, color=Faker.rand_color())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-DataZoom(inside)"),
        datazoom_opts=opts.DataZoomOpts(type_="inside"),
    )
    .render("bar_datazoom_inside.html")
)

Python pyecharts绘制条形图详解

6、显示最值 Bar - Bar_markpoint_type

list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.HALLOWEEN))
    .add_xaxis(list1)
    .add_yaxis("票价", list2, stack="stack1", category_gap="50%")
    .add_yaxis("人次", list3,   stack="stack1",category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        ),
        markpoint_opts=opts.MarkPointOpts( #########
            data=[
            opts.MarkPointItem(type_="max", name="最大值"),
            opts.MarkPointItem(type_="min", name="最小值"),
            opts.MarkPointItem(type_="average", name="平均值"),
        ]
           ),#########
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title='中国电影票房',subtitle='按地区比较票价与人次'),
         brush_opts=opts.BrushOpts() ,### 使用这个可以使图片的右上角多出来一些工具
        datazoom_opts=opts.DataZoomOpts(orient='vertical'), 
    )
)
c.render("cnbo2.html") # 生成html图片
# os.system("cnbo01.html")  # 执行完代码直接跳出来图片
c.render_notebook() # 直接在代码区域展示图片

Python pyecharts绘制条形图详解

Python pyecharts绘制条形图详解

7、改变滚动条在侧面 Bar - Bar_datazoom_slider_vertical

list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
    .add_xaxis(list1)
    .add_yaxis("票价", list2, stack="stack1", category_gap="50%")
    .add_yaxis("人次", list3,   stack="stack1",category_gap="50%")
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title='中国电影票房',subtitle='按地区比较票价与人次'),
         brush_opts=opts.BrushOpts() ,### 使用这个可以使图片的右上角多出来一些工具
        datazoom_opts=opts.DataZoomOpts(orient='vertical'), 
    )
)
c.render("cnbo2.html") # 生成html图片
# os.system("cnbo01.html")  # 执行完代码直接跳出来图片
c.render_notebook() # 直接在代码区域展示图片

Python pyecharts绘制条形图详解

8、多个Y轴

colors=['#5793f3','#d14a61','#675bba']
legend_list=['票房','人次','价格','评价']
list1=cnbodfsort['REGION'].tolist()
list2=cnbodfsort['PRICE'].tolist()
list3=cnbodfsort['PERSONS'].tolist()
list4=cnbodfsort['BO'].tolist()
list5=cnbodfsort['points'].tolist()
c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,width="1600px",height="600px"))
    .add_xaxis(list1)
    .add_yaxis("评分", list5,yaxis_index=0,category_gap="50%",color=colors[2])
    .add_yaxis("票价", list2,yaxis_index=0,category_gap="50%",color=colors[0])
    .add_yaxis("人次", list3,yaxis_index=0,category_gap="50%",color=colors[1])
    
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="top",
            formatter=JsCode(
                "function(x){return Number(x.data).toFixed(2);}"
            ),
        ),
        markpoint_opts=opts.MarkPointOpts(
            data=[
            opts.MarkPointItem(type_="max", name="最大值"),
            opts.MarkPointItem(type_="min", name="最小值"),
            opts.MarkPointItem(type_="average", name="平均值"),
               ]
           ),
    )    
    .extend_axis(
    yaxis=opts.AxisOpts(
        name="票房",
        type_="value",
        min_=1000,
        max_=150000,
        interval=10000,
        position="right",
        axislabel_opts=opts.LabelOpts(formatter="{value} 万")
    )
    )
    
    .extend_axis(
    yaxis=opts.AxisOpts(
        name="评价",
        type_="value",
        min_=0,
        max_=11,
        interval=1,
        position="left",
        axislabel_opts=opts.LabelOpts(formatter="{value} 点"),
        axisline_opts=opts.AxisLineOpts(
            linestyle_opts=opts.LineStyleOpts(color=colors[2])
        ),
        splitline_opts=opts.SplitLineOpts(
            is_show=True,linestyle_opts=opts.LineStyleOpts(opacity=1)
        ),
        )
    )
    
        .set_global_opts(
            yaxis_opts=opts.AxisOpts(
                type_="value",
                name="票价",
                min_=10,
                max_=70,
                position="right",
                offset=80,
                axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color=colors[0])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 元"),
        ),

        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        datazoom_opts=opts.DataZoomOpts(orient='vertical'),
        toolbox_opts=opts.ToolboxOpts(pos_left='120%'),
        legend_opts=opts.LegendOpts(is_show=False),
    )
 )
line = (
    Line()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="票房",
        yaxis_index=1,
        y_axis=list4,
        label_opts=opts.LabelOpts(is_show=False),
    )
)
c.render_notebook() # 直接在代码区域展示图片

双Y轴:

Python pyecharts绘制条形图详解

9、直方图 Bar - Bar_histogram

# Bar - Bar_histogram
from pyecharts.options.global_options import ThemeType
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar({"theme":ThemeType.DARK})
    .add_xaxis(cnboregiongb.index.tolist())
    .add_yaxis("数量", cnboregiongb.values.tolist(), category_gap=0, color=Faker.rand_color())
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图"))
)
c.render_notebook()

Python pyecharts绘制条形图详解

以上就是Python pyecharts绘制条形图详解的详细内容,更多关于Python pyecharts条形图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
wxPython学习之主框架实例
Sep 28 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
Python工厂函数用法实例分析
May 14 Python
python 字符串和整数的转换方法
Jun 25 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Python循环实现n的全排列功能
Sep 16 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
python实现对doc、txt、xls等文档的读写操作
Apr 02 #Python
Python OpenCV超详细讲解基本功能
python函数的两种嵌套方法使用
Apr 02 #Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Python实现提取PDF简历信息并存入Excel
Apr 02 #Python
You might like
PHP HTML代码串 截取实现代码
2009/06/29 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
php实现登录页面的简单实例
2019/09/29 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
五一服装活动方案
2014/01/11 职场文书
安全责任书范本
2014/04/15 职场文书
文明倡议书范文
2014/04/15 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
材料员岗位职责范本
2015/04/11 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python