本文研究的主要是python可视化包Bokeh的相关内容,具体如下。
问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适。
解决:在网上搜了一下,找到一篇介绍文章 python可视化工具概述,其中介绍了几个python包,总结如下:
- Pandas对于简单绘图,可以随手用,但你需要学习定制matplotlib。
- Seaborn可以支持更多复杂的可视化方式,但仍然需要matplotlib知识,上色功能是个亮点。
- ggplot有很多功能,但还需要发展。
- bokeh是一个有效的工具,如果你想建立一个可视化的服务器,这几乎是杀鸡用牛刀的事情。
- pygal独立运行,可用来生成交互的svg图表和png文件。它没有基于matploglib的方案那样灵活。
- Plotly可生成大多数可交互图表。你可以保存为离线文件,然后建立丰富的基于web的可视化。
- 感觉Bokeh比较合适,就认真研究了一下,找到一篇简单介绍Bokeh使用的文章 交互式数据可视化,在Python中用Bokeh实现,Bokeh可以直接跟Jinja2集成,将生成的图像在网页中直接显示,正满足需求。大体流程如下:
1、生成图像
1
2
3
|
p = figure(title = code, plot_width = 1024 , plot_height = 600 , x_axis_type = 'datetime' )
p.line(x = trd_df[ 'date' ], y = trd_df[ 'close' ])
script, div = components(p)
|
2、在flask中传递参数
1
2
3
4
|
return render_template( 'show_stock.html' ,
bk_js = bokeh.resources.INLINE.render_js(),
bk_css = bokeh.resources.INLINE.render_css(),
p_script = script, div = p_div)
|
3、在html中调用显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!doctype html>
< html lang = "en" >
< head >
< meta charset = 'utf-8' />
< meta http-equiv = 'content-type' content = 'text/html; charset=utf-8' />
< title >Embed Demo</ title >
{{ js_resources|indent(4)|safe }}
{{ css_resources|indent(4)|safe }}
{{ p_script|indent(4)|safe }}
</ head >
< body >
{{ p_div|indent(4)|safe }}
</ body >
</ html >
|
总结
以上就是本文关于浅谈python可视化包Bokeh的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/seanb/article/details/52758374