Bokeh: 如何改变日期时间轴的范围

Bokeh: 如何改变日期时间轴的范围

在本文中,我们将介绍如何使用Bokeh Python库改变日期时间轴的范围。Bokeh是一个强大的数据可视化工具,可帮助我们创建交互式和吸引人的视觉图表。

阅读更多:Bokeh 教程

1. 理解日期时间轴

在使用Bokeh绘制时间序列数据时,时间轴的范围是非常重要的。日期时间轴用于表示时间的连续性,并根据指定的范围显示日期时间刻度。Bokeh提供了灵活的方法来更改日期时间轴的范围,以满足我们的需求。

2. 默认日期时间范围

当我们使用Bokeh绘制时间序列数据时,默认情况下,Bokeh会根据数据中的最小和最大日期时间值自动设置日期时间轴的范围。这确保了轴上显示所有数据的日期时间刻度。

让我们通过一个示例来说明:

from bokeh.plotting import figure, show
from bokeh.models import RangeTool, CrosshairTool
from bokeh.models.tools import WheelZoomTool
from bokeh.io import output_notebook
from datetime import datetime, timedelta

output_notebook()

# 创建一个带有时间序列数据的Figure
p = figure(width=800, height=300, x_axis_type="datetime")
p.title.text = "股票价格走势"
p.xaxis.axis_label = "日期"
p.yaxis.axis_label = "价格"

# 模拟时间序列数据
dates = [datetime(2021, 1, 1) + timedelta(days=i) for i in range(30)]
prices = [100, 105, 108, 110, 112, 115, 120, 118, 116, 114, 110, 108, 105, 103, 101, 100, 102, 105, 108, 110, 112, 115, 120, 118, 116, 114, 110, 108, 105, 103]
p.line(dates, prices)

# 绘制图表
show(p)

以上代码创建了一个简单的时间序列图表,显示了一个月的股票价格走势。默认情况下,x轴上的时间范围为整个数据集的日期范围。

3. 改变日期时间范围

有时,我们可能希望改变日期时间轴的范围,以便更好地突出数据中的特定时间段。Bokeh提供了多种方法来实现这一点。

3.1. 手动设置日期时间范围

我们可以使用x_range属性来手动设置x轴的日期时间范围。x_range属性接受一个元组,其中包含最小和最大日期时间值。让我们将日期时间轴范围设置为2021年1月10日至1月20日:

# 手动设置日期时间轴范围
p.x_range = (datetime(2021, 1, 10), datetime(2021, 1, 20))

# 绘制图表
show(p)

这将改变日期时间轴的范围,只显示指定的日期范围。

3.2. 自适应日期时间范围

Bokeh还提供了自适应日期时间范围的选项,以便根据数据动态调整日期时间轴的范围。我们可以使用DataRange1d(start=None, end=None)函数来设置自适应日期时间范围。

让我们先清除当前的日期时间范围设置,然后使用自适应日期时间范围来重新绘制图表:

# 清除当前的日期时间轴范围设置
p.x_range = None

# 设置自适应日期时间轴范围
from bokeh.models import DataRange1d
p.x_range = DataRange1d()

# 绘制图表
show(p)

这将使日期时间轴自动适应数据集中的日期时间范围,以便显示所有的时间刻度。

3.3. 缩放和平移日期时间轴范围

除了手动设置和自适应日期时间范围之外,我们还可以通过缩放和平移操作来改变日期时间轴的范围。

Bokeh提供了多种工具来启用缩放和平移操作,例如滚轮缩放工具(WheelZoomTool)和范围选择工具(RangeTool)。这些工具允许用户通过鼠标操作来缩放和平移日期时间轴范围。

让我们添加滚轮缩放工具和范围选择工具来改变日期时间轴的范围:

# 添加滚轮缩放工具
p.add_tools(WheelZoomTool())

# 添加范围选择工具
range_tool = RangeTool(x_range=p.x_range)
p.add_tools(range_tool)
p.toolbar.active_multi = range_tool

# 绘制图表
show(p)

这将在图表下方添加一个范围选择工具,可以使用该工具来缩放和平移日期时间轴的范围。

4. 自定义日期时间刻度格式

除了改变日期时间轴的范围之外,我们还可以自定义日期时间轴上的刻度格式。Bokeh提供了DatetimeTickFormatter类,可以用于设置日期时间轴上的刻度格式。

例如,让我们将日期时间轴的刻度格式设置为“月份-日期-年份”:

from bokeh.models import DatetimeTickFormatter

# 设置日期时间刻度格式
p.xaxis.formatter = DatetimeTickFormatter(days=["%m-%d-%Y"])

# 绘制图表
show(p)

这将使日期时间轴上的刻度以“月份-日期-年份”的格式进行显示。

总结

本文介绍了如何使用Bokeh Python库改变日期时间轴的范围。我们学习了如何手动设置日期时间范围,使用自适应日期时间范围,以及通过缩放和平移操作来改变日期时间轴的范围。我们还了解了如何自定义日期时间刻度格式。希望本文能帮助你在Bokeh中有效地处理日期时间轴范围的问题,创造出更好的数据可视化图表。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Bokeh 问答