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

使用Bokeh绘制箱线图:展示数据分布情况

发布时间:2024-01-03 14:48:17

Bokeh是一个用于数据可视化的Python库,可以帮助我们轻松绘制各种各样的图表,包括箱线图。箱线图是一种常用的数据分布可视化图表,用于展示数据的中位数、上下四分位数以及可能的离群值。

在使用Bokeh绘制箱线图之前,我们首先需要安装Bokeh库。可以通过以下命令在命令行中安装Bokeh库:

pip install bokeh

安装完成后,我们可以开始使用Bokeh绘制箱线图。

首先,我们需要导入需要使用的库和模块:

import numpy as np
from bokeh.plotting import figure, show
from bokeh.layouts import column

接下来,我们可以生成一些示例数据,以便展示箱线图的效果:

np.random.seed(42)
data = np.random.normal(0, 1, 100)

在上面的代码中,我们使用numpy库生成了100个符合正态分布的随机数。

接下来,我们可以计算数据的中位数、上下四分位数以及可能的离群值:

q1, q2, q3 = np.percentile(data, [25, 50, 75])
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = [x for x in data if x < lower_bound or x > upper_bound]

在上面的代码中,我们使用numpy库的percentile函数计算了数据的上下四分位数,然后根据四分位数计算了内限范围(lower_bound和upper_bound),最后找到了可能的离群值(outliers)。

接下来,我们可以使用Bokeh库绘制箱线图,并将数据和离群值添加到图表中:

p = figure(width=300, height=300)
p.segment(0, q2, 1, q2, color="black")
p.rect(0.5, q1, 0.2, iqr, color="blue", alpha=0.2)
p.rect(0.5, q3, 0.2, iqr, color="blue", alpha=0.2)
p.circle(0.5, outliers, size=6, color="red", alpha=0.6)

在上面的代码中,我们创建了一个名为p的图表对象。使用segment方法绘制了代表中位数的黑色线段,使用rect方法绘制了代表上下四分位数的蓝色矩形,使用circle方法绘制了离群值的红色圆圈。

最后,我们可以使用show函数展示箱线图:

show(column(p))

在上面的代码中,我们使用了show函数和column函数,将图表添加到显示中。

完整的示例代码如下:

import numpy as np
from bokeh.plotting import figure, show
from bokeh.layouts import column

np.random.seed(42)
data = np.random.normal(0, 1, 100)

q1, q2, q3 = np.percentile(data, [25, 50, 75])
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = [x for x in data if x < lower_bound or x > upper_bound]

p = figure(width=300, height=300)
p.segment(0, q2, 1, q2, color="black")
p.rect(0.5, q1, 0.2, iqr, color="blue", alpha=0.2)
p.rect(0.5, q3, 0.2, iqr, color="blue", alpha=0.2)
p.circle(0.5, outliers, size=6, color="red", alpha=0.6)

show(column(p))

运行以上代码,即可生成一个简单的箱线图,展示了数据的分布情况。

通过以上例子,我们可以看到使用Bokeh绘制箱线图非常简单。Bokeh提供了丰富的绘图功能,可以帮助我们更好地理解和分析数据。通过选择合适的参数和样式,我们可以自定义箱线图的外观以及呈现的数据。