Bokeh 绘制多条线图
在本文中,我们将介绍如何使用 Bokeh 从 ColumnDataSource 绘制多条线图。
在数据可视化中,绘制多条线图是一种常见的方式,它可以同时展示多个变量之间的关系。Bokeh 是一个用于数据可视化的强大工具,它提供了丰富的功能来创建交互式和漂亮的多条线图。
阅读更多:Bokeh 教程
准备数据
首先,我们需要准备数据。在这个示例中,我们将使用 ColumnDataSource 对象作为数据源。ColumnDataSource 是 Bokeh 提供的一种数据结构,它可以存储多个列的数据,并且可以在绘图中方便地访问这些数据。
下面是一个示例数据集,它包含了三个变量:x、y1 和 y2。x 是一个时间序列,y1 和 y2 是与 x 相关的两个变量的取值。
from bokeh.models import ColumnDataSource
import pandas as pd
data = {
'x': pd.date_range(start='1/1/2022', periods=10),
'y1': [1, 3, 2, 4, 6, 8, 7, 5, 4, 6],
'y2': [2, 4, 3, 5, 7, 9, 8, 6, 5, 7]
}
source = ColumnDataSource(data)
上述代码创建了一个包含三列数据的 ColumnDataSource 对象,并将其命名为 source。
绘制多条线图
有了数据源后,我们可以使用 Bokeh 创建多条线图了。下面是一个示例代码,它使用了 Line 对象来绘制两条线。
from bokeh.plotting import figure, show
p = figure(title='Multiple Lines', x_axis_type='datetime',
x_axis_label='Time', y_axis_label='Value')
p.line(x='x', y='y1', source=source, line_color='red', legend_label='Line 1')
p.line(x='x', y='y2', source=source, line_color='blue', legend_label='Line 2')
p.legend.location = 'top_left'
show(p)
上述代码中,我们通过 figure 对象创建了一个绘图空间,并设置了标题、横轴和纵轴的标签。接下来,我们使用 line 方法绘制了两条线,分别用红色和蓝色表示,并分别加上了图例。
最后,我们调用 show 方法显示绘图结果。
定制线的样式
Bokeh 提供了丰富的定制选项,可以修改线的样式。例如,我们可以调整线的颜色、线宽、透明度等。
下面是示例代码,展示了如何定制线的样式。
p = figure(title='Multiple Lines', x_axis_type='datetime',
x_axis_label='Time', y_axis_label='Value')
p.line(x='x', y='y1', source=source, line_color='red', line_width=2,
line_dash='dotted', line_alpha=0.8, legend_label='Line 1')
p.line(x='x', y='y2', source=source, line_color='blue', line_width=2,
line_dash='dashed', line_alpha=0.6, legend_label='Line 2')
p.legend.location = 'top_left'
show(p)
上述代码中,我们使用 line 方法的参数来定制了线的样式。line_color 设置线的颜色,line_width 设置线的宽度,line_dash 设置线的样式(虚线或虚点线),line_alpha 设置线的透明度。
添加数据点
除了绘制线之外,我们还可以添加数据点来更直观地展示数据。在 Bokeh 中,我们可以使用 circle 方法添加数据点。
下面是示例代码,展示了如何添加数据点。
p = figure(title='Multiple Lines', x_axis_type='datetime',
x_axis_label='Time', y_axis_label='Value')
p.line(x='x', y='y1', source=source, line_color='red', legend_label='Line 1')
p.line(x='x', y='y2', source=source, line_color='blue', legend_label='Line 2')
p.circle(x='x', y='y1', source=source, fill_color='white', size=6)
p.circle(x='x', y='y2', source=source, fill_color='white', size=6)
p.legend.location = 'top_left'
show(p)
上述代码中,我们使用 circle 方法添加了数据点。circle 方法的参数中,x 和 y 是数据点的位置,fill_color 设置数据点的填充颜色,size 设置数据点的大小。
总结
本文介绍了如何使用 Bokeh 绘制多条线图。首先,我们准备了数据,并将其存储在 ColumnDataSource 对象中。然后,我们使用 Line 对象来绘制多条线,并通过定制线的样式和添加数据点来丰富图表。Bokeh 提供了丰富的功能和选项,可以帮助我们创建漂亮和交互式的多条线图。
在实际应用中,我们可以根据具体需求进行定制,例如修改线的样式、添加标签等。希望本文能够帮助读者更好地理解和使用 Bokeh 绘制多条线图的方法。