0

0

Bokeh 散点图颜色映射:基于独立温度范围(z)对 y 值进行归一化着色

心靈之曲

心靈之曲

发布时间:2026-03-04 20:19:02

|

814人浏览过

|

来源于php中文网

原创

Bokeh 散点图颜色映射:基于独立温度范围(z)对 y 值进行归一化着色

本文详解如何在 bokeh 中实现散点图的颜色映射,使点的颜色依据 y 值(如温度)着色,但色彩标尺(colorbar)范围由独立的 z 列表(如完整温区 0–100℃)定义,解决数据维度不一致与归一化映射的核心难点。

本文详解如何在 bokeh 中实现散点图的颜色映射,使点的颜色依据 y 值(如温度)着色,但色彩标尺(colorbar)范围由独立的 z 列表(如完整温区 0–100℃)定义,解决数据维度不一致与归一化映射的核心难点。

在 Bokeh 中为散点图实现“语义正确”的颜色映射,关键在于区分两个概念:着色依据的数据列(即每个点实际对应的物理量,如观测温度 y)与色彩标尺的参考范围(即该物理量的理论/标称全量程,如 z = [0, 1, ..., 99])。当 z 长度与 x/y 不同(例如 len(z)=100 而 len(y)=50)时,不能直接将 z 作为颜色字段,而应将其用作定义 LinearColorMapper 的 low 和 high 边界——这确保了颜色映射具备可比性与可复用性(例如多图对比、跨实验一致性)。

以下为完整实现流程(含可运行示例):

✅ 步骤 1:准备数据并明确映射逻辑

import random
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, LinearColorMapper, ColorBar
from bokeh.palettes import Spectral6

# 模拟数据:50个观测点
x = list(range(1, 51))
y = random.sample(range(0, 100), 50)  # 实际观测温度(单位:℃)

# 独立的标称温区:代表仪器量程或标准参考范围(0–99℃),长度=100 ≠ len(y)
z = list(range(0, 100))

# ✅ 关键:z 不参与绘图数据构造,仅用于定义 color mapper 的范围
color_low, color_high = min(z), max(z)  # → 0, 99

✅ 步骤 2:构建 ColumnDataSource

source 必须包含所有绘图所需字段,其中用于着色的字段(此处为 'temperature')应直接使用原始 y 值(无需归一化!Bokeh 会自动按 low/high 缩放):

寻光
寻光

阿里达摩院寻光视频创作平台,以视觉AIGC为核心功能,用PPT制作的方式创作视频

下载
source = ColumnDataSource(dict(
    x=x,
    y=y,
    temperature=y  # 字段名需与 cmap.field_name 严格一致
))

✅ 步骤 3:配置 LinearColorMapper 并绑定 palette

指定 field_name 为数据源中的着色字段名,low/high 设为 z 定义的标称范围:

cmap = LinearColorMapper(
    field_name='temperature',
    palette=Spectral6,
    low=color_low,   # ← 来自 z,非 min(y)
    high=color_high  # ← 来自 z,非 max(y)
)

✅ 步骤 4:绘制散点图 + 添加 colorbar

p = figure(
    title="Temperature Observations (Color Scale: 0–99℃)",
    width=700, height=500,
    x_axis_label="Sample Index", y_axis_label="Temperature (℃)"
)

# 使用字典语法传递 color:字段 + 变换器
scatter = p.scatter(
    x='x', y='y',
    size=12,
    source=source,
    color={'field': 'temperature', 'transform': cmap},
    line_color="white", line_width=0.5
)

# 添加 colorbar(可选但强烈推荐)
color_bar = ColorBar(
    color_mapper=cmap,
    label_standoff=12,
    border_line_color=None,
    location=(0, 0),
    title="Temperature (℃)"
)
p.add_layout(color_bar, 'right')

show(p)

⚠️ 注意事项与最佳实践

  • 不要对 y 归一化再传入 source:常见误区是先 y_norm = (y - min_z) / (max_z - min_z) 再存入 source。这会导致 colorbar 标签失真(显示 0–1 而非 0–99℃)。Bokeh 的 LinearColorMapper 会在渲染时自动完成线性映射。
  • z 仅用于定义范围,不需与 y 长度一致:z 可以是任意长度的数值序列(如 np.linspace(0, 99, 256)),只要能准确表达物理量程即可。
  • 处理离群值:若 y 中存在明显异常值(如 y=[..., 150]),建议显式设置 low/high 为 z 的极值,避免 colormap 被拉伸失真。
  • palette 选择:Spectral6 是离散调色板;若需连续渐变,改用 Viridis256 或 Plasma256,并确保 LinearColorMapper 的 palette 参数匹配。

通过以上结构化步骤,你不仅能正确实现颜色映射,更能确保可视化结果具备科学严谨性——颜色直观反映物理意义(如温度高低),且标尺范围稳定可解释,为后续多组数据对比与报告输出奠定基础。

相关标签:

len

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

5

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

12

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

33

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

25

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

77

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

60

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

48

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

26

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

20

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号