【Python3 爬虫学习笔记】绘制图形 3 -- Bokeh包

Matplotlib在绘制各种科学图形方面功能强大,但占用的内存空间及计算资源也很大。如果绘制的图形不太复杂,小巧的Bokeh包就够用了。Bokeh的大小只有Matplotlib的五分之一,并且其所绘制的图形还是在网页中显示。

用Bokeh绘制基本图形

使用Bokeh绘图时,其大部分绘图功能是由bokeh.plotting子包中的figure和show模块完成的,所以我们一般至少要导入figure及show这两个模块:

from bokeh.plotting import figure, show

Bokeh绘制的图形是在浏览器中显示的,因此还需要先用figure()方法在浏览器中创建一个网页作为图形区域,语法为:

变量 = figure(width=绘图区宽度, height=绘图区高度)

例如:创建一个宽800像素、高400像素的绘图区,并把绘图区定义为变量p:

p = figure(width=800, height=400)

Bokeh也是主要用于绘制x、y坐标图,所以必须把x、y坐标存入列表中传给Bokeh,例如我们要绘制6个点:

listx = [1,5,7,9,13,16]
listy = [15,30,50,60,80,90]

bokeh.plotting绘制线形图的方法为line(),语法为:

绘图区变量.line(x坐标列表, y坐标列表)

例:用listx及listy绘制线形图:

p.line(listx, listy)

所绘的图形不会自动显示,需要调用show()方法打开浏览器显示绘图区,例:

show(p)

在这里插入图片描述Bokeh会生成一个名为start_kernel.html的文件,然后打开该文件以显示图形。
如果需要自定义该文件的名称,可通过output_file()方法来指定输出文件的名称。例如,自定义网页名称为lineout.html:

output_file("lineout.html")

使用上述方法前,需导入output_file包。

line()方法的参数及图形

bokeh.ploting的line()方法中,除了x坐标列表及y坐标列表为必需参数外,其它主要可选参数如下:

扫描二维码关注公众号,回复: 4300287 查看本文章
  • line_color:设置线条颜色。例如设置线条为红色:line_color=“red”。
  • line_width:设置线条宽度。例如设置线条宽度为5:linewidth=5。
  • line_alpha:设置线条透明度,0为完全透明,1.0位完全不透明。例如设置透明度为0.5:line_alpha=0.5。
  • line_dash:设置虚线样式,其值是一个列表:第一个元素为显示点数,第二个元素为空白点数。例如:line_dash=[12,6]。
  • legend:设置图例名称。例如设置图例名称为“年度”:legend=“年度”。
同时绘制多个图形

在一个坐标系中绘制多个图形时,我们一般会绘制完成所有图形后一并显示,例如绘制以下两个图形:

from bokeh.plotting import figure, show
p = figure(width=800, height=400)
listx1 = [1,5,7,9,13,16]
listy1 = [15,50,80,40,70,50]
p.line(listx1, listy1)
listx2 = [2,6,8,11,14,16]
listy2 = [10,40,30,50,80,69]
p.line(listx2, listy2)
show(p)

在这里插入图片描述

图形设置

图形标题是通过figure()方法的title参数进行设置的,其语法为:

figure(title=图形标题)

例如设置图形标题为“统计图”:

p = figure(width=800,height=400,title="统计图")

系统还提供了设置字体大小及颜色功能,语法为:

p.title_text_color = 文字颜色
p.title_text_font_size = 字体大小

字体大小值需指定单位,例如设置文字颜色为蓝色,大小为20pt:

p.title_text_color = "blue"
p.title_text_font_size = "20pt"

图形x、y轴的标题是通过xaxis.axis_label属性及yaxis_axis_label属性来设置的,例如设置x轴标题为“年度”,y轴标题为“金额”:

p.xaxis.axis_label = "年度"
p.yaxis.axis_label = "金额"

我们还可以通过p.xaxis_axis_label_text_color及p.yaxis_axis_label_text_color这两个属性来设置x、y轴标题的颜色,例如设置x轴标题为“红色”,y轴标题为“绿色”:

p.xaxis_axis_label_text_color = "red"
p.yaxis_axis_label_text_color = "green"

案例:Bokeh线形图绘制

绘制两个线形图并设置相关图形属性。

from bokeh.plotting import figure, show

p = figure(width=800, height=400, title="零花钱统计")
# p.title_text_color = "green"
# p.title_text_font_size = "18pt"
p.xaxis.axis_label = "年龄"
p.xaxis.axis_label_text_color = "violet"
p.yaxis.axis_label = "零花钱"
p.yaxis.axis_label_text_color = "violet"
dashs = [12, 4]
listx1 = [1,5,7,9,13,16]
listy1 = [15,50,80,40,70,50]
p.line(listx1, listy1, line_width=4, line_color="red", line_alpha=0.3, line_dash=dashs, legend="男性")
listx2 = [2,6,8,11,14,16]
listy2 = [10,40,30,50,80,60]
p.line(listx2, listy2, line_width=4, legend="女性")
show(p)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/htsait4113/article/details/84641685