掌握Python库的Bokeh,就能让你的交互炫目可视化

这篇具有很好参考价值的文章主要介绍了掌握Python库的Bokeh,就能让你的交互炫目可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文分享自华为云社区《Bokeh图形魔法:掌握绘图基础与高级技巧,定制炫目可视化》,作者: 柠檬味拥抱。

Bokeh是一个用于创建交互式可视化图形的强大Python库。它不仅易于使用,而且功能强大,适用于各种数据可视化需求。本文将介绍Bokeh库的绘图可视化基础入门,重点说明常用的参数,并通过实例演示如何在实际项目中应用这些技术。

安装Bokeh库

首先,确保你已经安装了Bokeh库。如果没有安装,可以使用以下命令进行安装:

pip install bokeh

Bokeh绘图基础

Bokeh支持多种图形类型,包括散点图、线图、柱状图等。在绘制这些图形时,我们需要关注一些重要的参数。

基础图形绘制

首先,我们来看一个简单的例子,绘制一个散点图:

from bokeh.plotting import figure, show
from bokeh.io import output_notebook

# 准备数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# 创建绘图对象
p = figure(title="简单散点图", x_axis_label='X轴', y_axis_label='Y轴')

# 绘制散点图
p.circle(x, y, size=10, color="navy", alpha=0.5)

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在上述代码中,我们使用figure函数创建了一个绘图对象,并使用circle方法绘制了一个散点图。size参数控制点的大小,color参数定义颜色,alpha参数设置透明度。

完善图形

除了基本的绘图,Bokeh还支持添加轴标签、图例等元素,使图形更加完整。以下是一个例子:

# 添加轴标签
p.xaxis.axis_label_standoff = 15
p.yaxis.axis_label_standoff = 15

# 添加图例
p.legend.label_text_font_size = "12pt"
p.legend.location = "top_left"

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

通过以上代码,我们在图形上方添加了X轴和Y轴的标签,并在左上角添加了图例。

实例演示

让我们通过一个实际案例,展示如何使用Bokeh进行更复杂的可视化。

案例:股票走势图

import yfinance as yf

# 获取股票数据
stock_data = yf.download("AAPL", start="2023-01-01", end="2024-01-01")

# 创建绘图对象
p = figure(title="AAPL股票走势", x_axis_label='日期', y_axis_label='股价(美元)', x_axis_type="datetime")

# 绘制线图
p.line(stock_data.index, stock_data['Close'], line_width=2, color="orange", legend_label="收盘价")

# 添加图例和轴标签
p.legend.location = "top_left"
p.xaxis.axis_label_standoff = 15
p.yaxis.axis_label_standoff = 15

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在这个例子中,我们使用了yfinance库获取了苹果公司(AAPL)股票在指定日期范围内的数据,并使用Bokeh绘制了股票的收盘价走势图。

Bokeh库高级功能探索

在了解了Bokeh的基础绘图技术后,我们将深入探讨一些高级功能,使得你能够更灵活、更创造性地进行数据可视化。

1. 工具栏和交互性

Bokeh提供了丰富的工具栏,可以让用户与图形进行交互。下面是一个包含工具栏的例子:

from bokeh.models import HoverTool

# 创建绘图对象
p = figure(title="交互式散点图", x_axis_label='X轴', y_axis_label='Y轴', tools="pan,box_zoom,reset,save")

# 添加悬停工具
hover = HoverTool(tooltips=[("数值", "@x, @y")])
p.add_tools(hover)

# 绘制散点图
p.circle(x, y, size=10, color="navy", alpha=0.5)

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在上述例子中,我们通过tools参数添加了平移、缩放、重置和保存工具,并使用HoverTool添加了悬停提示。

2. 高级图形元素

Bokeh支持绘制一些高级图形元素,例如矩形、椭圆等。以下是一个绘制矩形和椭圆的例子:

# 创建绘图对象
p = figure(title="矩形和椭圆示例", x_axis_label='X轴', y_axis_label='Y轴')

# 绘制矩形
p.rect(x=[1, 2, 3], y=[4, 5, 6], width=0.2, height=0.2, color="green", alpha=0.7)

# 绘制椭圆
p.ellipse(x=[4, 5, 6], y=[7, 8, 9], width=0.2, height=0.1, color="blue", alpha=0.7)

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

3. 数据链接和动态更新

Bokeh允许你动态地更新图形,可以根据用户的输入或外部事件来实现。以下是一个简单的例子,演示如何通过滑块动态更新散点图:

from bokeh.models import Slider
from bokeh.layouts import column

# 创建绘图对象
p = figure(title="动态散点图", x_axis_label='X轴', y_axis_label='Y轴')

# 创建滑块
slider = Slider(start=1, end=10, step=1, value=1, title="选择散点大小")

# 回调函数,根据滑块值更新散点大小
def update_size(attr, old, new):
    p.circle(x, y, size=new, color="navy", alpha=0.5)

slider.on_change('value', update_size)

# 将图形和滑块组合在一起
layout = column(p, slider)

# 在Jupyter Notebook中显示图形
output_notebook()
show(layout)

在这个例子中,滑块的值变化时,通过回调函数更新了散点的大小,实现了动态更新效果。,你可以创建出更具吸引力和实用性的可视化图形,更好地展示和解释数据。继续探索Bokeh的文档和示例,发挥其潜力,提升你的数据可视化技能。

Bokeh库与其他库的整合

Bokeh可以与其他Python库无缝整合,进一步拓展其功能。在本节中,我们将介绍Bokeh与Pandas、Matplotlib等库的整合,以及如何在Web应用中使用Bokeh。

1. 与Pandas整合

Pandas是一个强大的数据分析库,而Bokeh可以轻松地与Pandas进行整合,实现更便捷的数据可视化。

import pandas as pd

# 创建一个Pandas DataFrame
data = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [6, 7, 2, 4, 5]})

# 使用Bokeh绘制散点图
p = figure(title="Pandas整合示例", x_axis_label='X轴', y_axis_label='Y轴')
p.circle('x', 'y', size=10, color="navy", alpha=0.5, source=data)

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在这个例子中,我们创建了一个Pandas DataFrame,并使用Bokeh的circle函数绘制了散点图,其中的数据直接来自于DataFrame。

2. 与Matplotlib整合

如果你已经熟悉Matplotlib,并且希望结合Bokeh的交互性和Matplotlib的绘图功能,你可以使用bokeh.plottingfrom_bokeh函数将Bokeh图形转换为Matplotlib图形。

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.plotting import from_bokeh

# 创建Bokeh绘图对象
p = figure(title="Bokeh与Matplotlib整合示例", x_axis_label='X轴', y_axis_label='Y轴')
p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=10, color="navy", alpha=0.5)

# 在Jupyter Notebook中显示Bokeh图形
output_notebook()
show(p)

# 转换为Matplotlib图形
mpl_fig = from_bokeh(p)

# 在Matplotlib中显示图形
import matplotlib.pyplot as plt
plt.show(mpl_fig)

这样,你可以在使用Bokeh的同时,充分利用Matplotlib的丰富绘图功能。

3. 在Web应用中使用Bokeh

Bokeh提供了bokeh.server模块,使得你能够将Bokeh图形嵌入到Web应用中。这样,你可以创建交互式、动态的可视化应用。

from bokeh.models import ColumnDataSource
from bokeh.models.widgets import Slider
from bokeh.layouts import column
from bokeh.io import curdoc

# 创建绘图对象和数据源
source = ColumnDataSource(data={'x': [1, 2, 3, 4, 5], 'y': [6, 7, 2, 4, 5]})
p = figure(title="动态散点图", x_axis_label='X轴', y_axis_label='Y轴')
p.circle('x', 'y', size=10, color="navy", alpha=0.5, source=source)

# 创建滑块和回调函数
slider = Slider(start=1, end=10, step=1, value=1, title="选择散点大小")

def update_size(attr, old, new):
    source.data = {'x': [1, 2, 3, 4, 5], 'y': [6, 7, 2, 4, 5], 'size': [new]*5}

slider.on_change('value', update_size)

# 将图形和滑块组合在一起
layout = column(p, slider)

# 将布局添加到文档
curdoc().add_root(layout)

通过上述代码,你可以使用Bokeh创建一个交互式Web应用。运行此脚本后,可以通过访问http://localhost:5006/在本地查看应用。

Bokeh库的主题和样式定制

Bokeh不仅提供了丰富的绘图功能,还允许用户根据需求自定义图形的主题和样式,以便更好地与项目风格或品牌一致。在本节中,我们将学习如何定制Bokeh图形的主题和样式。

1. 主题定制

Bokeh提供了一系列内置主题,用户可以轻松切换以改变图形的整体外观。以下是一个主题定制的简单例子:

from bokeh.themes import built_in_themes

# 创建绘图对象
p = figure(title="主题定制示例", x_axis_label='X轴', y_axis_label='Y轴')

# 选择主题
p.theme = built_in_themes['dark_minimal']

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在这个例子中,我们选择了内置主题'dark_minimal',你可以根据实际需求选择其他主题,如'light_minimal''caliber'等。

2. 样式定制

Bokeh还允许用户直接调整图形的样式,包括颜色、线型、字体等。以下是一个简单的样式定制例子:

# 创建绘图对象
p = figure(title="样式定制示例", x_axis_label='X轴', y_axis_label='Y轴')

# 绘制线图
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2, line_color="green", line_dash="dashed")

# 设置字体样式
p.title.text_font = "times"
p.title.text_font_style = "italic"

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在这个例子中,我们使用line_color参数设置线的颜色为绿色,使用line_dash参数设置线型为虚线,通过设置title.text_fonttitle.text_font_style调整标题的字体和样式。

3. 自定义工具提示

Bokeh允许用户自定义工具提示的内容和样式,以更好地满足项目需求。以下是一个自定义工具提示的例子:

from bokeh.models import HoverTool

# 创建绘图对象
p = figure(title="自定义工具提示示例", x_axis_label='X轴', y_axis_label='Y轴')

# 绘制散点图
scatter = p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=10, color="navy", alpha=0.5)

# 自定义工具提示
hover = HoverTool(tooltips=[("数值", "@x, @y"), ("额外信息", "自定义信息")], renderers=[scatter])
p.add_tools(hover)

# 在Jupyter Notebook中显示图形
output_notebook()
show(p)

在这个例子中,我们通过HoverTooltooltips参数定义了工具提示的内容,并通过renderers参数指定了应用工具提示的图形元素。

总结

Bokeh库是一个功能强大、灵活且易于使用的Python可视化库,适用于各种数据可视化需求。本文从基础入门开始,介绍了Bokeh的基本绘图技术,包括散点图、线图、柱状图等,详细说明了常用的参数和实例演示。随后,我们深入探讨了Bokeh的高级功能,包括工具栏、交互性、高级图形元素和动态更新,使得读者能够更灵活地进行数据可视化。

进一步地,我们探讨了Bokeh库与其他常用库的整合,包括与Pandas、Matplotlib的结合,以及在Web应用中使用Bokeh的方法。这使得Bokeh不仅可以独立使用,还可以与其他库协同工作,充分发挥各个库的优势。

最后,我们了解了Bokeh库的主题和样式定制,学习了如何选择内置主题、调整样式和自定义工具提示,以便更好地满足个性化的可视化需求。Bokeh的主题和样式定制功能为用户提供了更多定制化的空间,使得可视化图形更符合项目的整体风格和品牌。

通过本文的内容,读者可以建立起对Bokeh库全面的认识,从基础到高级,从整合到定制,为数据科学家和工程师提供了强大的工具,助力更好地理解、展示和传达数据。继续深入学习Bokeh的文档和示例,将有助于更加熟练地运用这一强大的可视化工具。

 文章来源地址https://www.toymoban.com/news/detail-840156.html

点击关注,第一时间了解华为云新鲜技术~

 

到了这里,关于掌握Python库的Bokeh,就能让你的交互炫目可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 掌握这5款 Edge插件,让你的浏览器使用更高效!

    您好,今天我想向您推荐两款不常用的 Edge 插件,它们可以帮助您更高效地浏览网页和管理标签页。这些插件可能不像一些常见的插件那样广为人知,但它们的功能却非常实用。 IHome新标签页插件 下载地址: https://microsoftedge.microsoft.com/addons/detail/ihome%E5%8E%9Fbdtab%E6%96%B0%E6%A0%

    2024年02月04日
    浏览(47)
  • 这个牛逼的Python模块,能让你轻松模拟并记录键盘操作(附零基础学习资料)

    模拟键盘操作执行自动化任务,我们常用的有 pyautowin 等自动化操作模块。但是这些模块有一个很大的缺点,编译的时候非常依赖 windows 的C语言底层模块。 (文末送福利) 今天介绍的这个模块叫做 keyboard 它有一个最大的优点:纯Python原生开发,编译时完全不需要依赖C语言模

    2024年02月13日
    浏览(46)
  • 【Windows】不要让你的win键落灰!掌握常用的组合快捷键,使用电脑更高效了

    Windows 操作系统提供了丰富的键盘快捷键,能够大幅提高工作效率和操作便利性。在此介绍一些与 Win 键相关的常用快捷键,帮助你更好地利用 Windows 系统。想要在使用电脑时更高效吗?掌握常用的组合快捷键,让你的 Win 键从此不再落灰!这些快捷键可以让你在操作系统中快

    2024年02月15日
    浏览(55)
  • AI文生图:从零到逼真-掌握技巧,让你的AI图像生成更出色 Part I

    根据调查数据,超过90%的用户在使用AI文生图工具时,都期望能够生成高度逼真的图像。 经过深入的测试和验证,我们决定撰写一系列文章,向您展示提示词技巧以及相关的命令参数。通过这些技巧,您将能够轻松地利用AI工具,制作出令人惊叹的逼真图像。 在接下来的五期

    2024年02月22日
    浏览(49)
  • 一文弄懂Vue与Servlet的交互:让你的大学课设变得容易起来

    目前较为流行的套装是SpringBoot+Vue。SpringBoot操作简单,仅会使用的话上手非常容易。那么小游你为何逆流而上,要写一个Vue+Servlet的交互呢? 要知道,CSDN最大的受众是学生,而且多数是大学生。就目前的形势而言,大学里的技术偏基础,有些甚至已经过时,如JSP。而有些老师

    2024年01月20日
    浏览(40)
  • Photoshop史上最强更新,动动手指就能让AI替你修图

    Photoshop 在最新的 Beta 版本中,融入了 Firely 智能 AI 创意填充功能,只要对图片进行简单地框选,就能实现生成对象、生成背景、扩展图像、移除对象以及更多创意功能,支持用自然语言输入指令,让 AI 替你完成创意填充。 早在2023年3月份的时候,Adobe 就推出了 Firely(又名萤

    2024年02月13日
    浏览(41)
  • 读什么书能让你进入高层次

    “黄金非宝书为宝,万事皆空善不空。” 我很少看到有人说读书不好的,但却很少看到有人读好书。 好书、好读书、读好书,都是很稀缺的。 基本上,我们遇到的每个困惑,都有一本书能够给出解答。 因为你的困惑并不独特,有高人解决了它,并写成了书。 我们不可能认

    2023年04月10日
    浏览(35)
  • 【初学者必读】能让你月薪过万的5大web前端核心技能

    前言 Web前端开发所涉及的内容主要包括W3C标准中的结构、行为和表现,那么这三项中我们需要掌握的核心技能是什么呢?看小编来为你揭开谜底的。 HTML发展历史有二十多年,历经多次版本更新,HTML5和CSS3的出现又是一次革新。有些人认为前端开发要掌握的技能简单,不就是

    2024年02月08日
    浏览(52)
  • 9 个让你的 Python 代码更快的小技巧

    哈喽大家好,我是咸鱼 我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 原文链接: https://medium.com/techtofreedom/9-fabulous-python-tricks-that-m

    2024年02月03日
    浏览(52)
  • chatgpt赋能python:Python数值互换:让你的编程更加高效

    Python是一种高级编程语言,其灵活性和易于学习的特点使其在科学计算、数据分析和人工智能等领域变得非常流行。作为Python的用户,很多时候你可能需要将数值类型之间进行转换,这样可以提高你的编程效率。在本文中,我们将介绍Python中数值互换的知识,并提供一些帮助

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包