欢迎访问宙启技术站
智能推送

Python中使用Bokeh实现散点图的示例

发布时间:2024-01-03 14:53:08

Bokeh是一个Python库,用于创建交互式的数据可视化图表。它支持多种图表类型,包括散点图。下面是使用Bokeh创建散点图的示例。

首先,我们需要导入Bokeh库和一些其他必要的模块:

from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.palettes import Category10

然后,我们将创建一个输出文件,并设置一些样式选项:

output_file("scatter_plot.html")
p = figure(title="Scatter Plot", width=800, height=400)

接下来,我们创建一些随机数据,包括x和y坐标以及颜色值:

import random

num_points = 100
x = [random.randint(0, 100) for _ in range(num_points)]
y = [random.randint(0, 100) for _ in range(num_points)]
colors = [Category10[10][random.randint(0, 9)] for _ in range(num_points)]

然后,将数据封装在一个ColumnDataSource对象中,以便更好地与Bokeh进行交互:

source = ColumnDataSource(data=dict(x=x, y=y, colors=colors))

接下来,我们使用circle()方法创建散点图,并将数据源设置为之前创建的ColumnDataSource对象:

p.circle(x='x', y='y', fill_color='colors', size=10, alpha=0.5, source=source)

最后,我们使用show()函数显示散点图:

show(p)

当执行这段代码时,将创建一个名为“scatter_plot.html”的输出文件,并在浏览器中显示散点图。散点图将包含100个随机位置和颜色的散点。

考虑一个使用Bokeh创建散点图的实际应用场景。假设你正在研究一组学生的数学和物理成绩,并希望创建一个散点图来显示这些数据。你已经从某个数据库中获取了这些数据,并将其保存在一个DataFrame对象中。

首先,你需要导入需要的模块:

from bokeh.plotting import figure, show
from bokeh.io import output_file
from bokeh.models import ColumnDataSource

然后,导入你的数据并创建一个DataFrame对象:

import pandas as pd

data = {'Student': ['Alice', 'Bob', 'Charlie', 'Dave', 'Eve'],
        'Math': [85, 90, 88, 92, 78],
        'Physics': [70, 82, 79, 88, 75]}

df = pd.DataFrame(data)

接下来,将数据封装在一个ColumnDataSource对象中:

source = ColumnDataSource(df)

然后,创建一个输出文件并设置一些样式选项:

output_file("scatter_plot.html")
p = figure(title="Math vs. Physics", x_axis_label='Math', y_axis_label='Physics')

接下来,使用circle()方法创建散点图,并将数据源设置为之前创建的ColumnDataSource对象:

p.circle(x='Math', y='Physics', size=10, alpha=0.5, source=source)

最后,使用show()函数显示散点图:

show(p)

当执行这段代码时,将创建一个名为“scatter_plot.html”的输出文件,并在浏览器中显示散点图。散点图将包含每个学生的数学和物理成绩,其中x轴表示数学成绩,y轴表示物理成绩。

这是使用Bokeh创建散点图的基本示例。根据你的需求,你可以进一步定制化图表的样式和属性。Bokeh还提供了其他功能,如添加图例、工具栏和悬停等,以增强交互性和可视化效果。你可以在Bokeh的官方文档中找到更多关于散点图和其他图表类型的详细信息和示例。