当前位置: 首页 > article >正文

Python实战:三步复现文献中的专业colorbar配色方案

1. 为什么需要复现文献中的colorbar在科研论文的可视化中colorbar色标是数据可视化的重要组成部分。它不仅仅是颜色的展示更是数据范围和分布的直观体现。很多顶级期刊的论文都会使用特定的配色方案这些方案往往经过精心设计能够清晰传达数据的特征和趋势。我刚开始做科研的时候经常遇到这样的困扰看到一篇论文里的图表配色特别好看想在自己的研究中用同样的风格但就是找不到完全匹配的colorbar。后来发现很多作者会使用NCLNCAR Command Language中的配色方案或者基于这些方案进行自定义修改。这时候如果能快速复现这些配色就能让自己的图表看起来更专业。举个例子我最近在复现一篇海洋温度异常的研究时原作者使用的是一种蓝-白-黄-红的渐变colorbar。这种配色不仅能清晰区分正负异常值还能直观展示温度变化的强度。如果直接用matplotlib默认的viridis或者jet配色效果就会差很多。2. 准备工作环境和工具配置2.1 安装必要的Python库在开始之前我们需要确保安装了必要的Python库。除了常规的科学计算三件套numpy, matplotlib, pandas还需要一个特殊的库cmaps它包含了NCL的所有配色方案。pip install numpy matplotlib cmaps如果你用的是Anaconda也可以用conda安装conda install -c conda-forge cmaps2.2 理解colorbar的基本结构一个完整的colorbar包含几个关键要素色标范围vmin, vmax决定colorbar显示的最小值和最大值颜色映射colormap定义颜色如何随数值变化刻度ticks标记重要数值点的位置扩展标记extend指示数据是否超出当前范围在matplotlib中我们主要使用matplotlib.colors模块和matplotlib.colorbar相关功能来操作这些要素。3. 第一步识别和移植NCL色标3.1 查找匹配的NCL色标NCL提供了上百种预设的配色方案其中很多都被广泛用于科研论文。要找到文献中使用的配色可以先观察它的颜色渐变规律。比如前面提到的蓝-白-黄-红渐变在NCL中对应的就是BlueWhiteOrangeRed。我们可以先用这个基础色标import cmaps import matplotlib.pyplot as plt # 查看所有可用的NCL色标 print(cmaps.cnames.keys()) # 创建一个简单的colorbar示例 plt.figure(figsize(8, 2)) plt.imshow([[0,1]], cmapcmaps.BlueWhiteOrangeRed, aspectauto) plt.colorbar(orientationhorizontal) plt.show()3.2 调整色标范围和分段文献中的colorbar往往不是简单的线性渐变而是有特定的分段。我们可以通过np.linspace来创建自定义的分段import numpy as np from matplotlib.colors import ListedColormap # 原始色标 cmap cmaps.BlueWhiteOrangeRed # 创建12个均匀分段 newcolors cmap(np.linspace(0, 1, 12)) # 重构为新的colormap newcmap ListedColormap(newcolors[::1], namecustom_BWOR)这里np.linspace(0, 1, 12)创建了12个从0到1的均匀间隔点对应色标上的12个颜色采样点。[::1]表示保持原始顺序如果需要反转色标可以用[::-1]。4. 第二步分段重构和参数调整4.1 设置非均匀分段有时候文献中的colorbar是非均匀分段的比如在关键值附近有更密集的颜色变化。这时候我们可以自定义分段点# 自定义非均匀分段点 segments np.array([0, 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) newcolors cmap(segments) # 创建非均匀分段的colormap uneven_cmap ListedColormap(newcolors)4.2 调整显示参数为了让colorbar更接近文献中的样式我们还需要调整一些显示参数fig plt.figure(figsize(10, 4)) ax fig.add_axes([0.1, 0.3, 0.8, 0.05]) # 调整colorbar的位置和大小 norm mpl.colors.Normalize(vmin-0.5, vmax0.5) cb fig.colorbar( mpl.cm.ScalarMappable(normnorm, cmapnewcmap), caxax, orientationhorizontal, labelTemperature Anomaly (℃), ticks[-0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4], extendboth # 两端延伸箭头 ) # 调整刻度样式 cb.ax.tick_params(whichmajor, directionin, length10, width1) cb.ax.xaxis.set_ticks_position(top) # 刻度在上方5. 第三步双色标融合技巧5.1 为什么要合并色标在某些研究中我们需要表示两个不同但相关的物理量。比如海洋研究中可能需要同时显示温度和海流信息。这时候合并两个色标就能让图表更简洁高效。5.2 实际操作垂直堆叠色标使用np.vstack可以很方便地合并两个色标# 选择两个要合并的色标 cmap1 cmaps.MPL_Blues_r # 蓝色系 cmap2 cmaps.cmocean_algae # 绿色系 # 分别采样颜色 colors1 cmap1(np.linspace(0, 1, 128)) colors2 cmap2(np.linspace(0, 1, 128)) # 垂直堆叠 combined_colors np.vstack((colors1, colors2)) combined_cmap ListedColormap(combined_colors, nameBlueGreen_Combined)5.3 处理合并后的范围合并后的色标范围通常是0到1但我们需要根据实际数据调整fig plt.figure(figsize(8, 6)) ax fig.add_axes([0.1, 0.1, 0.8, 0.03]) # 假设第一个变量范围是-10到0第二个是0到10 norm mpl.colors.Normalize(vmin-10, vmax10) cb fig.colorbar( mpl.cm.ScalarMappable(normnorm, cmapcombined_cmap), caxax, orientationhorizontal, labelCombined Variable, ticksnp.arange(-10, 11, 2) )6. 实战案例复现一篇海洋论文的colorbar让我们通过一个完整案例来巩固所学内容。假设我们要复现的论文使用了以下特征色标范围-1.5到1.5主要颜色深蓝→浅蓝→白→浅红→深红非均匀分段在0附近更密集刻度标记-1.5, -1.0, -0.5, -0.2, 0, 0.2, 0.5, 1.0, 1.5实现代码# 自定义分段点 segments np.array([0, 0.25, 0.4, 0.475, 0.5, 0.525, 0.6, 0.75, 1.0]) cmap cmaps.BlueDarkRed # NCL中的蓝白红色标 newcolors cmap(segments) # 创建colormap custom_cmap ListedColormap(newcolors) # 绘图 fig plt.figure(figsize(10, 4)) ax fig.add_axes([0.1, 0.2, 0.8, 0.05]) norm mpl.colors.Normalize(vmin-1.5, vmax1.5) cb fig.colorbar( mpl.cm.ScalarMappable(normnorm, cmapcustom_cmap), caxax, orientationhorizontal, labelSea Surface Height Anomaly (m), ticks[-1.5, -1.0, -0.5, -0.2, 0, 0.2, 0.5, 1.0, 1.5], extendboth ) # 美化 cb.ax.tick_params(labelsize10) cb.ax.set_title(Custom Colorbar Reproduction, pad15, fontsize12)7. 常见问题与解决方案在实际操作中可能会遇到各种问题。以下是我遇到过的一些典型情况问题1颜色过渡不自然有时候直接分段会导致颜色跳跃感太强。解决方法是在分段点附近增加采样密度# 在关键点0.5附近增加采样 x np.array([0, 0.4, 0.45, 0.475, 0.5, 0.525, 0.55, 0.6, 1.0]) newcolors cmap(np.sort(x)) # 确保顺序正确问题2色标显示范围不对确保vmin和vmax设置正确并且与数据的实际范围匹配。如果使用imshow可以设置vmin和vmax参数plt.imshow(data, cmapcustom_cmap, vmin-1.5, vmax1.5)问题3保存后颜色变化在保存图片时建议使用高dpi和适当的格式plt.savefig(output.png, dpi300, bbox_inchestight, facecolorwhite)8. 进阶技巧创建完全自定义的色标除了修改现有色标我们还可以从头创建全新的配色方案。这在需要特定品牌色或特殊含义配色时特别有用。from matplotlib.colors import LinearSegmentedColormap # 定义关键颜色节点 colors [ (0, #2a2d7c), # 深蓝 (0.4, #7b9bf5), # 浅蓝 (0.5, #ffffff), # 白 (0.6, #f5a27b), # 浅橙 (1, #7c2a2d) # 深红 ] # 创建colormap custom_cmap LinearSegmentedColormap.from_list(brand_colors, colors) # 测试显示 plt.figure(figsize(8, 2)) plt.imshow([[0,1]], cmapcustom_cmap, aspectauto) plt.colorbar(orientationhorizontal) plt.show()这种方法特别适合企业或团队需要保持视觉一致性的场景。你可以精确控制每个关键点的颜色和位置创建出完全符合需求的配色方案。在实际项目中我发现这套方法不仅能用于科研论文在做数据报告、商业演示时也同样有效。掌握这些技巧后你再也不用为找不到合适的colorbar而发愁反而可以创造出令人眼前一亮的可视化效果。

相关文章:

Python实战:三步复现文献中的专业colorbar配色方案

1. 为什么需要复现文献中的colorbar? 在科研论文的可视化中,colorbar(色标)是数据可视化的重要组成部分。它不仅仅是颜色的展示,更是数据范围和分布的直观体现。很多顶级期刊的论文都会使用特定的配色方案&#xff0c…...

告别传统CNN/RNN:用Transformer玩转EEG信号分类(以CBraMod为例的实战指南)

告别传统CNN/RNN:用Transformer玩转EEG信号分类(以CBraMod为例的实战指南) 当你在深夜盯着脑电图(EEG)信号发愁时,是否也曾被那些蜿蜒曲折的波形搞得头晕目眩?作为一名长期与脑机接口&#xff0…...

SUPER COLORIZER实战:Java后端集成AI上色服务开发指南

SUPER COLORIZER实战:Java后端集成AI上色服务开发指南 你是不是也遇到过这样的场景?内容平台上有大量用户上传的黑白线稿,电商后台堆积着需要上色的商品设计草图,手动一张张处理不仅效率低下,而且对设计师来说也是重复…...

PIVlab软件入门:从GUI操作到2D2C粒子测速实战

1. PIVlab是什么?为什么选择它做粒子测速? 第一次接触PIVlab时,我也被这个基于MATLAB的开源工具惊艳到了。它把复杂的粒子图像测速(Particle Image Velocimetry, PIV)流程封装成了一个直观的图形界面,让没有…...

基于LSTM神经网络实现锂电池SOH估计的案例学习:使用牛津电池老化数据集与特征工程

[电池SOH估算案例3]: 使用长短时记忆神经网络LSTM来实现锂电池SOH估计的算法学习案例(基于matlab编写) 1.使用牛津锂离子电池老化数据集来完成,并提供该数据集的处理代码,该代码可将原始数据集重新制表,处理完的数据非…...

Qt QTabWidget标签页文字方向修复:手把手教你重写QProxyStyle实现左侧标签水平显示

Qt QTabWidget标签页文字方向定制:从原理到实践的深度解决方案 在桌面应用开发中,Qt框架因其跨平台特性和丰富的UI组件库而广受欢迎。然而,当开发者尝试将QTabWidget的标签页位置设置为左侧时,一个令人困扰的问题出现了——标签文…...

忍者像素绘卷:天界画坊LSTM时间序列分析应用:预测用户绘画风格偏好

忍者像素绘卷:天界画坊LSTM时间序列分析应用 1. 场景痛点:AI绘画平台的用户偏好捕捉难题 在AI绘画平台"天界画坊"的运营过程中,我们发现一个普遍存在的痛点:用户风格偏好的动态变化难以捕捉。传统推荐系统主要基于静态…...

抖音去水印批量下载:3大核心痛点与颠覆性解决方案

抖音去水印批量下载:3大核心痛点与颠覆性解决方案 【免费下载链接】TikTokDownload 抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokDownload 还在为抖音视频下载而烦恼吗?TikTokDo…...

Figo 关于OntoGuard-CRE 技术白皮书——已在gitee上开源发布

OntoGuard-CRE 技术白皮书 版本:v1.0.0(已在gitee上开源发布:https://gitee.com/figo-cheung/OntoGuard-CRE) 发布人:Figo Cheung 发布日期:2026年4月 标签:KnowledgeGraph (知识图谱), LLM (大模型), InformationExtraction (信息抽取) 1…...

nli-distilroberta-base行业基准测试报告:在金融、法律、医疗文本上的专项评估

nli-distilroberta-base行业基准测试报告:在金融、法律、医疗文本上的专项评估 1. 测试背景与目标 自然语言推理(NLI)作为理解文本语义关系的核心技术,在专业领域的应用价值日益凸显。本次测试聚焦nli-distilroberta-base模型在金融、法律、医疗三大专…...

LCD屏幕闪烁(Flicker)的幕后元凶:用示波器实测VCOM电压,手把手教你调校

LCD屏幕闪烁(Flicker)的实战调校指南:从示波器测量到VCOM优化 当一块LCD屏幕在你面前不停闪烁时,那种视觉上的不适感会立刻转化为工程师的职业焦虑。Flicker现象不仅影响用户体验,更可能是产品设计缺陷的警示信号。作为…...

从离线微调到在线热更:构建可审计、可回滚、可灰度的模型生命周期闭环(金融级SLA保障方案)

第一章:大模型工程化中的模型热更新机制 2026奇点智能技术大会(https://ml-summit.org) 模型热更新是支撑大模型服务持续可用与敏捷演进的核心能力,它允许在不中断推理请求的前提下动态加载新版本权重、替换推理图结构或切换Tokenizer配置。该机制显著降…...

gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具乖

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...

抖音内容获取革命:智能下载引擎如何打破平台壁垒

抖音内容获取革命:智能下载引擎如何打破平台壁垒 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

深度学习图像分割终极指南:U-Net与ResNet-50的完美融合

深度学习图像分割终极指南:U-Net与ResNet-50的完美融合 【免费下载链接】pytorch-unet-resnet-50-encoder 项目地址: https://gitcode.com/gh_mirrors/py/pytorch-unet-resnet-50-encoder 还在为复杂的图像分割任务发愁吗?今天我要为你介绍一个基…...

python polars

# 关于Polars,一个Python数据处理库的深度观察 最近在数据处理的项目中频繁接触到Polars,这个库在社区里的讨论热度逐渐升高。作为在数据领域工作多年的开发者,觉得有必要梳理一下对这个工具的理解,特别是它和传统工具的区别以及实…...

如何用OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置?

如何用OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置? 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果(Hackintosh…...

7步解锁小米摄像机完整功能:yi-hack-v3固件终极指南

7步解锁小米摄像机完整功能:yi-hack-v3固件终极指南 【免费下载链接】yi-hack-v3 Alternative Firmware for Xiaomi Cameras based on Hi3518e Chipset 项目地址: https://gitcode.com/gh_mirrors/yi/yi-hack-v3 小米摄像机yi-hack-v3固件是一款专为海思Hi35…...

ZYNQ实战:AXI4-Stream FIFO跨时钟域传输的5个关键配置(附ADDA实验代码)

ZYNQ实战:AXI4-Stream FIFO跨时钟域传输的5个关键配置(附ADDA实验代码) 在FPGA开发中,跨时钟域数据传输一直是工程师面临的棘手问题之一。特别是当系统需要处理高速数据流时,如何确保数据在不同时钟域间安全、高效地传…...

Qwen3-0.6B-FP8在微信小程序开发中的应用:打造智能客服助手

Qwen3-0.6B-FP8在微信小程序开发中的应用:打造智能客服助手 你有没有遇到过这种情况?在小程序里买东西或者咨询问题,客服要么半天不回,要么就是机械的自动回复,问东答西,体验特别差。对于小程序开发者来说…...

如何高效优化Windows 11:5个实用技巧全面提升系统性能

如何高效优化Windows 11:5个实用技巧全面提升系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cu…...

FaceFusion镜像部署:一键运行,免配置快速体验AI换脸

FaceFusion镜像部署:一键运行,免配置快速体验AI换脸 1. 什么是FaceFusion FaceFusion是当前最先进的AI换脸工具之一,它通过深度学习技术实现了高质量的人脸替换功能。与传统的换脸工具相比,FaceFusion具有以下显著优势&#xff…...

IDM激活终极指南:开源脚本完整解决方案与快速配置方法

IDM激活终极指南:开源脚本完整解决方案与快速配置方法 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM(Internet Download Manager&am…...

光场相机入门:Macro Pixel与SAI如何让普通照片秒变3D(附Lytro实操指南)

光场相机实战:用Macro Pixel和SAI技术玩转3D摄影 想象一下,拍完照片后还能随意调整焦点、改变视角,甚至生成3D模型——这不是科幻电影,而是光场相机带来的真实体验。作为摄影技术的一次革命,光场相机通过独特的硬件设计…...

为什么你的Mac需要Scroll Reverser:解决多设备滚动混乱的终极方案

为什么你的Mac需要Scroll Reverser:解决多设备滚动混乱的终极方案 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经在MacBook触控板和外接鼠标之间切换时&a…...

AI对话新玩法:用Nanbeige像素冒险终端,体验“勇者与大贤者”的复古聊天

AI对话新玩法:用Nanbeige像素冒险终端,体验"勇者与大贤者"的复古聊天 1. 复古像素风AI对话体验 在AI对话工具日益同质化的今天,Nanbeige 4.1-3B像素冒险终端带来了一股清新之风。这个独特的对话界面将现代AI技术与复古游戏美学完…...

2025届最火的五大降重复率网站横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 经过用心地对文本结构加以调整,伴随巧妙地进行措辞处理,能够切切实实…...

SparkFun SPI SerialFlash库深度解析:嵌入式Flash驱动开发指南

1. SparkFun SPI SerialFlash Arduino 库深度解析:面向嵌入式工程师的串行 Flash 驱动开发指南串行 Flash 存储器(Serial Flash)是嵌入式系统中不可或缺的非易失性数据载体,广泛应用于固件存储、配置参数保存、日志记录、OTA 升级…...

MAA明日方舟小助手:基于智能图像识别的游戏自动化革命

MAA明日方舟小助手:基于智能图像识别的游戏自动化革命 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://git…...

别再只盯着mAP了!手把手教你用mmdetection打印每个类别的AP(附iou=0.5的精准调参)

深度解析mmdetection类别级AP分析:从指标解读到调参实战 在目标检测任务中,我们常常陷入一个思维定式——过度依赖mAP(mean Average Precision)这一全局指标来评判模型优劣。这就像仅凭GDP评价一个国家的发展水平,虽然…...