Bokeh是一款针对现代Web浏览器呈现功能的交互式可视化库。Bokeh通过Python(或其他语言)以快速简单的方式为超大型或流式数据集提供高性能交互的漂亮而且结构简单的多功能图形。
为了提供高级自定义所需的简单性和强大而灵活的功能,Bokeh向用户公开了两个接口级别:
bokeh.models
为应用程序开发人员提供的最灵活的一个底层接口。
bokeh.plotting
以构成可视符号为中心的一个高层接口。
以下内容侧重于bokeh.plotting接口。
安装
安装Bokeh有多种方式,我们推荐使用Anaconda Python distribution,并在Bash或Windows命令提示符下输入以下命令:
conda install bokeh
(开始菜单-Anaconda文件夹-Anaconda Prompt,直接输入以上命令即可)
如果你已经安装了所有需要的依赖项(如NumPy),也可以在命令行中使用pip:
pip install bokeh
入门
Bokeh是一个包含很多功能的大型库,因此本节只是对一些常见Bokeh用例的快速浏览。
我们从一些例子开始。
现在画一个折线图,图表页面包含缩放,平移,保存等功能。代码如下:
from bokeh.plotting import figure, output_file, show
# 准备数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
# 输出html文件
output_file("lines.html")
# 创建一个带有标题和轴标签的图表
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
# 添加一个带有图例和线条粗细的线条渲染器
p.line(x, y, legend="Temp.", line_width=2)
# 展示结果
show(p)
当执行这个脚本时,会看到创建了一个新的输出文件“lines.html”,浏览器还会自动打开一个新的标签来显示它。
在新的标签页,图表右侧有几个小图标,分别代表平移,选框缩放,滚轮缩放,保存,重置等。
画图步骤
准备数据
示例中是Python列表,也可以是NumPy数组或Pandas系列。
输出html文件
示例中使用output_file(),文件名为“lines.html”。在Jupyter notebooks中也可以使用output_notebook()。
调用figure()
这一步将创建一个具有典型默认选项的图形,并可轻松定制标题,工具和坐标轴标签。
添加渲染器
在示例中,我们使用line()制作折线图,渲染器可以自定义视觉,包括颜色,图例,宽度等。
显示(show())或保存(save())结果
这些功能将HTML绘图保存到文件中、显示在浏览器中。
如果我们需要通过添加更多的数据系列,符号,对数坐标轴等等来更多地定制输出,那么bokeh.plotting接口也非常方便。 如下代码,可以轻松制作组合图表:
from bokeh.plotting import figure, output_file, show
# 准备数据
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y0 = [i**2 for i in x]
y1 = [10**i for i in x]
y2 = [10**(i**2) for i in x]
# 输出html文件
output_file("../tmp/log_lines.html")
# 创建图表
p = figure(
tools="pan,box_zoom,reset,save",
y_axis_type="log", y_range=[0.001, 10**11], title="log axis example",
x_axis_label='sections', y_axis_label='particles')
# 添加渲染器
p.line(x, x, legend="y=x")
p.circle(x, x, legend="y=x", fill_color="white", size=8)
p.line(x, y0, legend="y=x^2", line_width=3)
p.line(x, y1, legend="y=10^x", line_color="red")
p.circle(x, y1, legend="y=10^x", fill_color="red", line_color="red", size=6)
p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")
# 展示结果
show(p)
Jupyter Notebooks默认工作目录的修改
安装Anaconda后,开始菜单-Anaconda文件夹-Jupyter Notebooks,打开Jupyter Notebooks后,首页显示就是默认的工作目录,但很大概率上并不是我们想要的,所以,介绍一下修改方法。
1.开始菜单-Anaconda文件夹-Anaconda Prompt,输入jupyter notebook --generate-config。
2.在个人用户文件夹下找到.Jupyter文件夹,打开可以看到jupyter_notebook_config.py文件。
3.用记事本或编辑器打开py文件,找到#c.NotebookApp.notebook_dir = ‘’,将这句话前面的“#”去掉,并改为c.NotebookApp.notebook_dir = ‘D:\ProgramData\Jupyter’,单引号里面的路径是我的工作空间,根据自己需要修改,这个文件夹需要自己提前新建好。
4.保存py文件,重启Jupyter Notebooks。
接下来,就可以看到一个非常干净的页面啦。
希望今天的几个小例子能缓解下大家的无聊,以及感受一下Bokeh的炫酷。最后一部分是关于修改Jupyter Notebooks的默认工作目录。
1. 波形图
这里绘制一个包含了数千个数据点的信号波形图,绘制方法和 Matlab 如出一辙。学习成本为零。
import pandas as pd
from bokeh.plotting import figure
from bokeh.io import output_file, show
csv_file = 'points.csv'
data = pd.read_csv(csv_file)
TOOLS = 'hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select'
picture = figure(width=1000, height=400, tools=TOOLS)
picture.line(data['order'], data['value'], color='blue', alpha=0.5)
output_file('waveform.html', title='waveform')
show(picture)
points.csv
中包含了 2048 个点。上面这段脚本是直接生成了一个 html 文件,show(picture)
语句打开了这个 html 文件。效果如下:
右侧的工具栏是通过TOOLS = 'hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select'
设置的。包含了常见的一些功能,包括缩放,保存,重置等等。由于简书的 markdown 不支持直接插入 div 块和 js 脚本,所以只能截取一个图放在这里,不能体验到右侧的工具栏的使用感受。
来源:http://wemedia.ifeng.com/54704473/wemedia.shtml
https://www.jianshu.com/p/8b4f17950777
https://search.ifeng.com/sofeng/search.action?q=Bokeh&c=1