Bokeh项目实战:使用Anscombe四重奏数据集展示数据可视化技巧

Bokeh项目实战:使用Anscombe四重奏数据集展示数据可视化技巧

bokeh bokeh/bokeh: 是一个用于创建交互式图形和数据的 Python 库。适合用于数据可视化、数据分析和呈现,以及创建动态的 Web 应用。特点是提供了一种简洁、直观的 API 来描述和处理数据,并生成交互式的可视化效果。 bokeh 项目地址: https://gitcode.com/gh_mirrors/bo/bokeh

概述

Anscombe四重奏(Anscombe's Quartet)是统计学中一个经典的示例,它由四个数据集组成,这些数据集在统计指标上几乎完全相同,但在图表上却呈现出完全不同的形态。本文将介绍如何使用Bokeh库来可视化这一经典数据集,并深入分析其实现原理。

Anscombe四重奏简介

Anscombe四重奏由统计学家Francis Anscombe于1973年提出,旨在强调数据可视化在统计分析中的重要性。这四个数据集具有以下相同的统计特性:

  • 每个数据集的x值平均数都是9.0
  • 每个数据集的y值平均数都是7.5
  • 每个数据集的x和y的线性回归方程都是y=3+0.5x
  • 每个数据集的相关系数都是0.816

然而,当我们将这些数据可视化后,会发现它们呈现出完全不同的分布模式。

Bokeh实现详解

1. 数据准备

首先,我们导入必要的库和数据集:

import numpy as np
from bokeh.io import show
from bokeh.layouts import column, gridplot
from bokeh.models import (ColumnDataSource, Div, Grid, Line,
                          LinearAxis, Plot, Range1d, Scatter)
from bokeh.sampledata.anscombe import data as df

Bokeh提供了内置的Anscombe数据集,可以直接导入使用。

2. 数据源设置

我们创建两个数据源:

  • circle_source:包含原始数据点
  • line_source:包含线性回归线数据
circle_source = ColumnDataSource(data=df)

x = np.linspace(-0.5, 20.5, 10)
y = 3 + 0.5 * x
line_source = ColumnDataSource(data=dict(x=x, y=y))

3. 绘图函数设计

我们定义了一个make_plot函数来创建每个子图:

def make_plot(title, xname, yname):
    plot = Plot(x_range=rng, y_range=rng, width=400, height=400,
                background_fill_color='#efefef')
    plot.title.text = title
    
    # 添加坐标轴
    xaxis = LinearAxis(axis_line_color=None)
    plot.add_layout(xaxis, 'below')
    yaxis = LinearAxis(axis_line_color=None)
    plot.add_layout(yaxis, 'left')
    
    # 添加网格线
    plot.add_layout(Grid(dimension=0, ticker=xaxis.ticker))
    plot.add_layout(Grid(dimension=1, ticker=yaxis.ticker))
    
    # 添加回归线
    line = Line(x='x', y='y', line_color="#666699", line_width=2)
    plot.add_glyph(line_source, line)
    
    # 添加数据点
    circle = Scatter(x=xname, y=yname, size=12, line_color="#cc6633",
                     fill_color="#cc6633",  fill_alpha=0.5)
    plot.add_glyph(circle_source, circle)
    
    return plot

4. 创建四个子图

使用上述函数创建四个子图:

I   = make_plot('I',   'Ix',   'Iy')
II  = make_plot('II',  'IIx',  'IIy')
III = make_plot('III', 'IIIx', 'IIIy')
IV  = make_plot('IV',  'IVx',  'IVy')

5. 布局设计

使用gridplot将四个图表排列成2×2的网格:

grid = gridplot([[I, II], [III, IV]], toolbar_location=None)

6. 添加说明文本

使用Div组件添加解释性文本:

div = Div(text="""
<h1>Anscombe's Quartet</h1>
<p>Anscombe's Quartet is a collection of four small datasets that have nearly
identical simple descriptive statistics (mean, variance, correlation, and
linear regression lines), yet appear very different when graphed.
</p>
""")

7. 最终展示

将文本和图表组合在一起展示:

show(column(div, grid, sizing_mode="scale_width"))

技术要点解析

  1. 低层级API使用:这个示例展示了Bokeh的低层级bokeh.modelsAPI的使用,相比高层级API,它提供了更精细的控制能力。

  2. 布局系统:使用了gridplotcolumn两种布局方式,展示了Bokeh强大的布局能力。

  3. 数据绑定:通过ColumnDataSource实现了数据与图表的绑定,这是Bokeh的核心概念之一。

  4. 可视化组件:使用了LineScatter两种图形标记,分别表示回归线和数据点。

教学意义

这个示例完美地展示了为什么在数据分析中不能仅仅依赖统计指标:

  1. 数据集I:呈现典型的线性关系
  2. 数据集II:呈现非线性关系
  3. 数据集III:存在一个异常值
  4. 数据集IV:x值几乎相同,只有一个异常点

通过Bokeh的可视化,我们可以直观地看到这些差异,而这是单纯看统计数字无法获得的洞察。

总结

通过这个示例,我们不仅学习了如何使用Bokeh创建复杂的可视化布局,更重要的是理解了数据可视化在统计分析中的重要性。Bokeh提供的灵活API和强大功能,使得我们可以轻松创建专业级的数据可视化作品。

bokeh bokeh/bokeh: 是一个用于创建交互式图形和数据的 Python 库。适合用于数据可视化、数据分析和呈现,以及创建动态的 Web 应用。特点是提供了一种简洁、直观的 API 来描述和处理数据,并生成交互式的可视化效果。 bokeh 项目地址: https://gitcode.com/gh_mirrors/bo/bokeh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

基于MATLAB的建筑能耗建模系统含源码+设计报告(高分毕设项目).zip 主要功能 建立建筑物能源系统的数学模型,包括锅炉、管道、散热器、混合器、空调机组等多种元件 使用隐式求解方法解决系统的能量平衡方程 支持多个求解器并行计算不同水循环系统 提供了连接不同求解器的Bridge类 项目目标**:建立一个可配置的建筑能耗模型,模拟住宅或商用建筑在不同气候条件下的热能耗与用电动态,支持节能控制策略模拟。 应用背景 随着建筑能耗在全球总能耗中的占比不断提高,利用数学建模和计算机仿真技术对建筑热环境进行预测与优化显得尤为重要。该项目通过 MATLAB 平台构建简洁、可扩展的建筑能耗仿真环境,可用于研究: * 建筑围护结构对能耗的影响 * 加热、通风和空调系统(HVAC)策略优化 * 被动/主动节能控制策略 * 与外部天气数据的交互仿真(如 TMY3) 核心模型类(.m 文件): AirHeatExchanger.m, Boiler.m, Chiller.m, Pipe.m, Radiator.m, FanCoil.m, HeatExchanger.m, Mixer.m, Same.m 这些文件定义了热交换器、锅炉、冷水机组、管道、散热器、风机盘管、混合器等建筑能源系统组件的数学模型及热平衡方程。 控制与求解相关: SetpointController.m:HVAC 设置点控制器。 Solver.m:核心数值求解器,用于建立并求解系统线性方程组。 系统集成与桥接: Bridge.m:用于连接多个 solver 或不同流体系统之间的耦合关系。 Constant.m:定义恒定温度源或引用变量。 环境与区域: Zone.m:建筑空间(房间)模块,模拟热容、传热等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋孝盼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值