下面我将为你详细讲解“python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据”的完整攻略。
准备工作
在开始这个项目之前,需要先进行一些准备工作:
- 安装Bokeh和Bottle.py库
Bokeh是一个Python可视化库,可以创建交互式图表、大数据集等视图。可以通过以下命令安装Bokeh库:
pip install bokeh
Bottle.py是一个Python web 框架,可以用来搭建简单的web应用。可以通过以下命令安装Bottle.py库:
pip install bottle
- 准备数据
需要有一些数据来在网页上展示,可以使用Python提供的随机数生成工具生成一些假数据,也可以使用真实的数据。这里我们使用一个简单的模拟数据。
搭建网页
在这一步,我们需要使用Bottle.py来搭建一个网页,用于展示我们生成的数据。可以新建一个Python文件,命名为webapp.py
。
首先,导入必要的库和模块:
from bottle import route, run, template, request
from bokeh.plotting import figure
from bokeh.embed import components
from bokeh.models import ColumnDataSource
然后,我们来创建一个route,用于返回数据可视化图表。这里我们使用Bokeh来绘制一个简单的折线图。
@route('/plot')
def plot():
# 生成假数据
x = [1, 2, 3, 4, 5]
y = [4, 5, 2, 7, 3]
# 创建一个ColumnDataSource对象
source = ColumnDataSource(data=dict(x=x, y=y))
# 创建一个Figure对象,并添加折线图
p = figure(title='折线图', x_axis_label='X轴', y_axis_label='Y轴')
p.line('x', 'y', source=source)
# 将图表转换为html格式的代码
script, div = components(p)
# 返回图表的html代码和script代码
return template('plot', script=script, div=div)
接下来,我们需要在views
目录下创建一个名为plot.tpl
的模板文件。在该文件中,我们将显示Bokeh图表的div
和script
分别插入到网页中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数据可视化</title>
{{ script | safe }}
</head>
<body>
{{ div | safe }}
</body>
</html>
运行网页
在新建的Python文件中添加以下代码:
if __name__ == '__main__':
run(host='localhost', port=8080, debug=True)
保存文件,同时确保终端所在目录下已开始virtual environment环境。然后在终端中运行以下命令:
python webapp.py
接着,打开浏览器并访问http://localhost:8080/plot
,您应该可以看到生成的数据可视化图表。
示例
为了更好地展示Bokeh和Bottle.py库的使用方法,这里举例说明两个数据可视化的实例。
1. 生成随机数据可视化
首先,我们生成一组随机数据,用于在网页上进行可视化。
import random
x = list(range(10))
y = [random.randint(0, 100) for _ in range(10)]
然后,我们使用Bokeh创建一个柱状图来展示这些数据。
p = figure(title='随机数据柱状图', x_axis_label='X', y_axis_label='Y')
p.vbar(x=x, top=y, width=0.5)
最后,我们将图表呈现在网页中。
source = ColumnDataSource(data=dict(x=x, y=y))
script, div = components(p)
return template('plot', script=script, div=div)
您可以访问http://localhost:8080/plot
查看图表。
2. 分组数据可视化
我们假设有一组数据,其中包含了三个班级的成绩,每个班级的成绩有10个。
import numpy as np
data = {
'class1': np.random.randint(0, 100, 10),
'class2': np.random.randint(0, 100, 10),
'class3': np.random.randint(0, 100, 10)
}
接下来,我们可以使用Bokeh创建一个分组柱状图来展示这些数据。
classes = ['class1', 'class2', 'class3']
colors = ['#c9d9d3', '#718dbf', '#e84d60']
p = figure(x_range=classes, title='班级成绩', plot_height=250, y_axis_label='成绩')
p.vbar_stack(classes, x='index', width=0.9, color=colors, source=data,
legend_label=classes)
p.xgrid.grid_line_color = None
p.legend.orientation = 'horizontal'
p.legend.location = 'top_center'
最后,我们将图表呈现在网页中。
source = ColumnDataSource(data=data)
script, div = components(p)
return template('plot', script=script, div=div)
您可以访问http://localhost:8080/plot
查看图表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据 - Python技术站