Python数据可视化:绘图库——Bokeh 应用讲解

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于娜驿站 ,作者娜娜zhao

前言

虽然在Python中有matplotlib可以满足我们大部分的绘图需求,但是这种原生的基本绘图确实显得不那么漂亮,当然可以通过一些设置使之看起来美观,然而那样一来就要花费不少的时间,好在强大的Python第三方库中有一些现成的绘图库,可以使得我们日常的绘图显得美观又便捷,这篇文章就来介绍一种绘图库——Bokeh。

Bokeh是用于现代Web浏览器的交互式可视化库,使用它可以进行快速交互式绘图,令我们感觉更方便的是还有一个与pandas绑定的版本——Pandas-Bokeh,使用这个绑定版本,既可以利用强大的pandas库,又可以调用Bokeh的强大绘图能力。

 

安装

熟悉Python第三方库安装的同学应该很容易对该包进行安装:

pip install pandas_bokeh

我这里安装的是bokeh-2.2.2和pandas-bokeh-0.5版本。Python的版本是3.8.3

条形统计图绘制

现在我们用一个小例子来说明条形统计图如何绘制,比如我们绘制连续十年的某三种产品销售量,为方便计,我们用numpy的随机数来生成这些数据:


import numpy as np
import pandas as pd
import pandas_bokeh as pb
df = pd.DataFrame({
   '年份': np.arange(2010, 2020),
   '产品A': np.random.uniform(9000, 15000, 10),
   '产品B': np.random.uniform(9000, 15000, 10),
   '产品C': np.random.uniform(9000, 15000, 10),
}
)
df

 

上述代码中的np.random.uniform(9000,15000,10)的意思是在9000-15000中随机选取10个数字,注意,从生成的结果来看,这些随机选择的数字可以是小数。

为了将图形绘制在jupyter-lab的notebook中,我们需要调用以下代码:

pb.output_notebook()

 

从上述显示信息可以看出,Bokeh已经加载成功,下面我们就来绘制条形统计图:

df.plot_bokeh(
   kind = 'bar',
   x = '年份',
   y = ['产品A', '产品B', '产品C'],
   xlabel = '产品数量',
   ylabel = '年度销售量',
   title = '三种产品年度销售统计图'
)

绘制的图形如下:

 

上述代码是不是比matplotlib更简洁?绘制的图形无论形状还是着色是不是比后者更漂亮?下面我们来简单说明一下plot_bokeh这个函数所带的几个参数:

  1. kind指的是我们要绘制的图形类型,当前的pandas_bokeh支持这几种图形:line, point, step, scatter, bar, histogram, area, pie, map。
  2. x和y直接传递的是dataframe数据集中的key,即指定何者为横轴数据,何者为纵轴数据。
  3. xlabel和ylabel是x轴和y轴的标签。
  4. title是图表的标题。

所以,只要配置好dataframe,即可以很容易绘制出我们想要的图形。

一些高级参数

当然,这个库也支持一些参数的高级用法,比如可以规定坐标轴的范围、关闭图形的鼠标缩放功能等等,比如将上述数据绘制成折线统计图:

df.plot_bokeh.line(    
   x = '年份',
   y = ['产品A', '产品B', '产品C'],
   xlabel = '产品数量',
   ylabel = '年度销售量',
   title = '三种产品年度销售统计图',
   figsize=(800, 500),
   ylim = (5000, 20000),
   zooming = False,
   panning=False,
)

绘制的图形如下:

 

注意: df.plot_bokeh.line(...)相当于df.plot_bokeh(kind='line', ...),其中figsize用一对数组定义了画布的宽和高;xlim和ylim分别定义了x轴和y轴的范围;zooming是鼠标滚轮缩放的开关;而panning是平移开关,当关闭时,曲线不能移动。当然这些开关都可以通过图形右侧的工具栏快速切换。

将图形输出到HTML文件

刚才我们设置将绘制的图形直接输出到jupyter-lab的notebook中,如果离开该环境,图形还可以输出成其它方式吗?答案是肯定的,即Bokeh还可以将图形输出成HTML文件进行保存,但在使用这一功能之前,需要指定HTML文件名称:

pb.output_file('mychart.html')

现在我们再来执行一下上述代码,看看要生成的条形统计图是如何保存成一个HTML文件的:

df.plot_bokeh(
   kind = 'bar',
   x = '年份',
   y = ['产品A', '产品B', '产品C'],
   xlabel = '产品数量',
   ylabel = '年度销售量',
   title = '三种产品年度销售统计图'
)

当我们运行上述代码时,浏览器立刻打开一个页面显示生成的图片,如下图所示:

 

小结

本文演示了pandas_bokeh这个第三方库的绘图功能,关于pandas的问题在本公众号前面有相应的几篇文章进行了简介,如果熟悉matplotlib的应该还对其中“中文”问题的设置有印象,但利用Bokeh,则不会存在这个问题。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值