Bokeh简介Bokeh是一个用于在浏览器上显示的交互式可视化库。Bokeh可以通过Python(或其他语言)为大型流式数据集快速便捷地提供优雅简洁的高性能交互式图表。在python中安装Bokeh的方法有很多种。最简单的方法是使用AnacondaPython发行版,然后在命令行中输入以下命令:condainstallbokeh将安装Bokeh所需的所有依赖项,Anaconda可以最大限度地降低安装过程的复杂性。如果你确信你已经安装了需要的依赖,比如numpy等,你可以在命令行使用pip安装:pipinstallbokeh为什么使用jupyternotebook作为绘图环境本文代码在notebook中执行,图表也直接显示在笔记本中。Notebook是数据探索的常用工具,广泛应用于数据科学领域。建议大家在学习Bokeh的过程中使用jupyternotebook。开始绘制Bokeh是一个拥有大量功能的大型库。具体的功能和方法这里不做赘述,仅通过一些案例展示Bokeh的使用过程和可视化界面。将python列表中的数据绘制成折线图非常简单,并且该图具有交互性,可以缩放、平移、保存等功能。图表最终会以html格式保存,并在浏览器中自动打开,可以通过output_file()函数来实现。如果你使用的是notebook环境,Bokeh可以直接在notebook中显示交互式图表,只需将output_file()函数替换为output_notebook()函数即可。#从bokeh.plottingimportfigure,output_notebook,show%matplotlibinline导入相关库#准备数据x=[1,2,3,4,5]y=[6,7,2,4,5]#在notbook中显示output_notebook()#创建一个带有标题和轴标签的新图形p=figure(title="simplelineexample",x_axis_label='x',y_axis_label='y')#Addalinefigurerendererwithlegendandlinethickness#p.line(x,y,legend="Temp.",line_width=2)#显示图表show(p)上面的例子画了一个折线图,简单的展示了bokeh.plotting模块的绘制过程。一般来说,我们使用bokeh.plotting模块来绘制有以下几个步骤:准备数据示例中的数据容器是一个列表,也可以使用numpy数组,pandas系列数据形式告诉Bokeh在哪里生成输出图表上面说了,图表输出有两种形式,一种是直接在notebook中显示,另一种是生成一个HTML文件,在浏览器中自动打开。调用figure()函数创建具有典型默认选项的图表并轻松自定义标题、工具和轴标签您可以使用其他绘图函数,如点图、直方图等来显示或保存图形。show()函数用于自动打开生成的HTML文件,save()函数用于保存生成的HTML文件。如果要在一个图表中绘制多个数据表,可以重复上面的第4步。可以添加多个数据系列,自定义不同的显示样式:frombokeh.plottingimportfigure,output_notebook,show#准备三个数据系列x=[0.1,0.5,1.0,1.5,2.0,2.5,3.0]y0=[i**2foriinx]y1=[10**iforiinx]y2=[10**(i**2)foriinx]#notbook中显示output_notebook()#新建表p=figure(tools="pan,box_zoom,reset,save",y_axis_type="log",y_range=[0.001,10**11],title="logaxisexample",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="44")#showChartshow(p)有时,绘制图表不仅需要知道数据点在x轴和y轴上的位置,还需要为数据点分配颜色和大小等属性以显示o数据点的其他含义,如下:importnumpyasnpfrombokeh.plottingimportfigure,output_file,show#PreparedataN=4000x=np.random.random(size=N)*100y=np.random.random(size=N)*100radii=np.random.random(size=N)*1.5colors=["#%02x%02x%02x"%(int(r),int(g),150)forr,ginzip(50+2*x,30+2*y)]#Displayoutput_notebook()TOOLS="crosshair,pan,wheel_zoom,box_zoom,reset,box_select,lasso_select"#创建图表并添加图标栏工具p=figure(tools=TOOLS,x_range=(0,100),y_range=(0,100))#添加圆形绘制渲染功能,并定义元素的颜色和样式p.circle(x,y,radius=radii,fill_color=colors,fill_alpha=0.6,line_color=None)#显示图表show(p)对于同一个数据,可能需要多种显示样式,比如线、点、圆等。,和把多个图表放在一起,Bokeh可以做的:importnumpyasnpfrombokeh.layoutsimportgridplotfrombokeh.plottingimportfigure,output_file,show#PreparedataN=100x=np.linspace(0,4*np.pi,N)y0=np.sin(x)y1=np.cos(x)y2=np.sin(x)+np.cos(x)#在notebook中显示output_notebook()#创建子图1,元素样式为circles1=figure(width=250,地块高度=250,title=None)s1.circle(x,y0,size=10,color="navy",alpha=0.5)#创建子图2,元素样式为三角形s2=figure(width=250,height=250,x_range=s1.x_range,y_range=s1.y_range,title=None)s2.triangle(x,y1,size=10,color="firebrick",alpha=0.5)#创建子图3,元素样式为squares3=figure(width=250,height=250,x_range=s1.x_range,title=None)s3.square(x,y2,size=10,color="olive",alpha=0.5)#将多个子图放入网格图中p=gridplot([[s1,s2,s3]],toolbar_location=None)#显示图表show(p)绘制股票价格趋势图,这种是关于时间序列的图表:importnumpyasnpfrombokeh.plottingimportfigure,output_file,showfrombokeh.sampledata.stocksimportAAPL#Preparedataaapl=np.array(AAPL['adj_close'])aapl_dates=np.array(AAPL['date'],dtype=np.datetime64)window_size=30window=np.ones(window_size)/float(window_size)aapl_avg=np.convolve(aapl,window,'same')#显示output_notebook()#新建图表p=figure(plot_width=800,plot_height=350,x_axis_type="datetime")#添加图表渲染p.circle(aapl_dates,aapl,size=4,color='darkgrey',alpha=0.2,legend='close')p.line(aapl_dates,aapl_avg,color='navy',legend='avg')#设置图表元素p.title.text="AAPLOne-MonthAverage"p.legend.location="top_left"p.grid.grid_line_alpha=0p.xaxis.axis_label='日期'p.yaxis.axis_label='价格'p.ygrid.band_fill_color="olive"p.ygrid.band_fill_alpha=0.1#显示图表show(p)总结以上几个例子来简单展示一下Bokeh的绘制方法,希望能起到一个引玉的作用,让大家了解Bokeh的威力,前往探索更多用途
