深圳网站建设公司top20,wordpress文章略缩图,公司注册资金认缴和实缴区别,网络管理系统逻辑上的四个组成更多资料获取
#x1f4da; 个人网站#xff1a;ipengtao.com 数据可视化在数据分析和科学研究中起着至关重要的作用。而Bokeh#xff08;发音为“bo-kay”#xff09;是一个强大的Python交互式可视化库#xff0c;提供了丰富的工具和功能#xff0c;使得创建交互式、吸…
更多资料获取 个人网站ipengtao.com 数据可视化在数据分析和科学研究中起着至关重要的作用。而Bokeh发音为“bo-kay”是一个强大的Python交互式可视化库提供了丰富的工具和功能使得创建交互式、吸引人的数据可视化变得轻而易举。本文将深入介绍Bokeh库的各个方面通过丰富的示例代码帮助读者更全面地了解和使用这一强大的工具。
安装与基础绘图
首先需要安装Bokeh库。通过以下命令即可完成安装
pip install bokeh安装完成后可以开始学习Bokeh的基础绘图。
以下是一个简单的例子绘制一条折线图
from bokeh.plotting import figure, show# 创建一个绘图对象
p figure(title简单折线图, x_axis_labelX轴, y_axis_labelY轴)# 添加折线
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 3])# 显示绘图
show(p)数据源与图形配置
Bokeh支持多种数据源和丰富的图形配置选项。
以下是一个使用ColumnDataSource的例子同时配置图形属性的示例
from bokeh.models import ColumnDataSource# 数据源
source ColumnDataSource(datadict(x[1, 2, 3, 4, 5], y[6, 7, 2, 4, 3]))# 创建绘图对象
p figure(title数据源与图形配置, x_axis_labelX轴, y_axis_labelY轴)# 添加折线
p.line(x, y, sourcesource, line_width2, line_colorgreen, legend_label折线)# 显示图形
show(p)图形交互与工具
Bokeh的强大之处在于其交互性和丰富的工具集。
以下示例展示了如何添加轨迹选择工具、缩放工具等
from bokeh.models import HoverTool# 创建绘图对象
p figure(title图形交互与工具, x_axis_labelX轴, y_axis_labelY轴, toolspan,box_zoom,reset)# 添加折线
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 3], line_width2, line_colorblue, legend_label折线)# 添加hover工具
hover HoverTool()
hover.tooltips [(数值, x, y)]
p.add_tools(hover)# 显示图形
show(p)布局与多图绘制
Bokeh支持灵活的布局可以轻松组合多个图形。
以下是一个简单的例子展示了如何创建水平布局
from bokeh.layouts import row# 创建两个绘图对象
p1 figure(title图1, x_axis_labelX轴, y_axis_labelY轴)
p2 figure(title图2, x_axis_labelX轴, y_axis_labelY轴)# 添加折线
p1.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 3], line_width2, line_colorred, legend_label折线1)
p2.line([1, 2, 3, 4, 5], [3, 2, 7, 1, 6], line_width2, line_colorgreen, legend_label折线2)# 将两个图形水平排列
layout row(p1, p2)# 显示布局
show(layout)其他高级功能
Bokeh库不仅提供了基础的绘图功能还支持许多高级功能拓展了其应用领域。以下是一些Bokeh的高级功能
1 绘制地理图
Bokeh可以轻松绘制地理图展示数据在地图上的分布情况。通过使用TileSource和Patches可以实现绘制各种地理形状例如国家、州、城市等。
以下是一个简单的绘制世界地图的示例
from bokeh.plotting import figure, show
from bokeh.tile_providers import get_provider
from bokeh.models import ColumnDataSource# 创建绘图对象
p figure(title世界地图, x_axis_label经度, y_axis_label纬度, plot_height400, plot_width800)# 设置TileSource为OpenStreetMap
tile_source get_provider(OSM)
p.add_tile(tile_source)# 示例数据表示两个城市的坐标
cities_data dict(lon[-74.0059, 139.6917],lat[40.7128, 35.6895],name[New York, Tokyo]
)# 将数据转为ColumnDataSource
cities_source ColumnDataSource(cities_data)# 绘制城市点
p.circle(xlon, ylat, size10, colorred, alpha0.8, legend_labelCities, sourcecities_source)# 显示地理图
show(p)2 时间序列图
Bokeh支持绘制时间序列图展示数据随时间的变化。通过设置X轴为时间类型可以轻松绘制时间序列。
以下是一个简单的股票价格时间序列图的示例
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource
from datetime import datetime# 示例数据表示股票价格随时间的变化
stock_data dict(date[datetime(2022, 1, 1), datetime(2022, 1, 2), datetime(2022, 1, 3)],price[100, 120, 90]
)# 将数据转为ColumnDataSource
stock_source ColumnDataSource(stock_data)# 创建绘图对象
p figure(title股票价格时间序列, x_axis_label日期, y_axis_label股价, x_axis_typedatetime)# 绘制线条
p.line(xdate, yprice, line_width2, line_colorblue, sourcestock_source)# 显示时间序列图
show(p)3 网络图
Bokeh可以绘制网络图展示节点和边之间的关系。通过使用Nodes和Edges可以创建具有复杂结构的网络图。
以下是一个简单的网络图的示例
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, NodesAndLinkedEdges# 示例数据表示网络中的节点和边
network_data dict(nodes[1, 2, 3, 4],edges[(1, 2), (2, 3), (3, 4), (4, 1)]
)# 将数据转为ColumnDataSource
network_source ColumnDataSource(network_data)# 创建绘图对象
p figure(title网络图, x_axis_labelX轴, y_axis_labelY轴)# 绘制节点和边
p.circle(x, y, size20, colorblue, sourcenetwork_source, legend_labelNodes)
p.multi_line(edge_x, edge_y, line_width2, line_colorgreen, sourcenetwork_source, legend_labelEdges)# 添加节点和边的链接
p.add_layout(NodesAndLinkedEdges(node_sourcenetwork_source, edge_sourcenetwork_source))# 显示网络图
show(p)实时数据更新与动画
Bokeh还支持实时数据更新和动画效果使得数据可视化更生动。
以下是一个简单的实时数据更新的示例
from bokeh.models import ColumnDataSource
from bokeh.io import curdoc
import numpy as np
import time# 数据源
source ColumnDataSource(datadict(x[0], y[0]))# 创建绘图对象
p figure(title实时数据更新, x_axis_labelX轴, y_axis_labelY轴)# 添加实时数据点
p.circle(x, y, sourcesource, size10, line_colornavy, fill_colororange, alpha0.6)# 实时更新数据
def update_data():new_data dict(x[source.data[x][-1] 1], y[np.random.randint(0, 10)])source.stream(new_data, rollover20)time.sleep(0.5) # 模拟实时更新# 添加周期性回调实现实时更新
curdoc().add_periodic_callback(update_data, 1000)# 显示实时数据更新图形
show(p, notebook_handleTrue)导出与嵌入
Bokeh允许用户将绘图导出为HTML、PNG、SVG等格式方便在不同环境中分享和展示。
以下是一个将绘图导出为HTML文件的例子
from bokeh.io import output_file# 创建绘图对象
p figure(title导出与嵌入, x_axis_labelX轴, y_axis_labelY轴)
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 3], line_width2, line_colorpurple, legend_label折线)# 导出为HTML文件
output_file(plot.html)# 显示图形
show(p)通过导出功能用户可以将Bokeh图形轻松嵌入到网页中与其他内容集成展示。
Bokeh Server
对于需要更高级交互性和动态更新的场景Bokeh提供了Bokeh Server。
以下是一个简单的Bokeh Server示例
from bokeh.server.server import Server
from bokeh.application import Application
from bokeh.application.handlers.function import FunctionHandlerdef modify_doc(doc):# 在这里添加交互性和动态更新的代码pass# 创建Bokeh Server应用
bokeh_app Application(FunctionHandler(modify_doc))# 启动Bokeh Server
server Server({/: bokeh_app}, port5000)
server.start()if __name__ __main__:print(Visit http://localhost:5006/ to view this app)server.io_loop.add_callback(server.show, /)server.io_loop.start()通过Bokeh Server用户可以构建更复杂的交互式应用实现更灵活的数据可视化。
总结
Bokeh库作为Python中的一款强大数据可视化工具不仅提供了基础的绘图功能还支持多种高级功能拓展了其应用领域。本文深入介绍了Bokeh的基础绘图、数据源与图形配置、图形交互与工具、布局与多图绘制等基本功能提供了全面的入门指南。此外通过展示Bokeh在实时数据更新与动画、导出与嵌入、Bokeh Server以及其他高级功能方面的应用可以深入了解Bokeh在复杂场景下的强大表现。
Bokeh的高级功能涵盖了绘制地理图、展示时间序列、绘制网络图等多个领域使其不仅适用于常规数据可视化也能满足特定领域的需求。例如绘制世界地图可以展示数据在地理空间的分布时间序列图可以清晰呈现数据随时间的变化趋势而网络图则适用于展示节点和边之间的复杂关系。
总体而言Bokeh以其简洁的语法、丰富的功能和强大的灵活性成为数据科学和可视化领域的得力工具。通过本文的学习能够更熟练地运用Bokeh库创建出更具交互性和吸引力的数据可视化图形提高数据分析和展示的效果。 Bokeh的多样化功能使其成为解决不同可视化问题的理想选择为用户提供了更丰富、更灵活的数据探索和展示手段。 Python学习路线 更多资料获取 个人网站ipengtao.com
如果还想要领取更多更丰富的资料可以点击文章下方名片回复【优质资料】即可获取 全方位学习资料包。 点击文章下方链接卡片回复【优质资料】可直接领取资料大礼包。