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 相关文章推荐
Python中的exec、eval使用实例
Sep 23 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python标准库之itertools库的使用方法
Sep 07 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
python自动化报告的输出用例详解
May 30 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
对django views中 request, response的常用操作详解
Jul 17 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
python异步Web框架sanic的实现
Apr 27 Python
什么是python的id函数
Jun 11 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 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模板,主要想体现一下思路
2006/12/25 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue实现分页组件
2020/06/16 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
Python3.4解释器用法简单示例
2019/03/22 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python批量处理文件或文件夹
2020/07/28 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
爱岗敬业演讲稿
2014/05/05 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书