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实现简单的可逆加密程序实例
Mar 05 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
如何通过python画loss曲线的方法
Jun 26 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
python集合删除多种方法详解
Feb 10 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 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
短波收音机简介
2021/03/01 无线电
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
新手入门常用代码集锦
2007/01/11 Javascript
javascript引导程序
2008/10/26 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python发布模块的步骤分享
2014/02/21 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
运动会解说词100字
2014/01/31 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android