这是一篇保姆级教程,教你从零开始制作COMSOL 自定义颜色表(Color Table)。无需编程基础,只需浏览器和 Excel,就能將你在配色网站上心仪的渐变色(十六进制格式)转化为 COMSOL 可用的归一化 RGB 色表文件。
前言:为什么要自定义颜色表?
COMSOL 默认的 Rainbow(彩虹色)虽然醒目,但在学术出版中往往显得不够专业,且可能对色觉障碍读者不友好。通过自定义颜色表,你可以:
- 使用 Viridis、Plasma 等感知均匀的色图(perceptually uniform colormaps)提升数据可读性
- 匹配期刊品牌色或公司 VI 配色
- 创建发散色图(diverging colormap)突出正负值变化
但 COMSOL 的色表文件要求 RGB 值在 0 到 1 之间(归一化),而设计网站上通常提供的是 十六进制代码(如 #1a5f7a)。本文将搭建这座桥梁。
准备工作:你需要什么?
- 浏览器:访问配色网站和在线转换工具
- Microsoft Excel(或 WPS、Google Sheets):进行数据处理
- 记事本/Notepad++:生成最终的
.txt文件 - 一段配色方案:从 Coolors.co、ColorBrewer 或 Adobe Color 挑选的十六进制色值
步骤一:获取十六进制颜色代码
首先,你需要一组按顺序排列的颜色(通常 5-10 个节点即可形成平滑渐变)。
推荐配色资源:
- Coolors.co:生成器可导出
.csv,支持渐变色导出 - ColorBrewer 2.0:专为数据可视化设计,提供色盲安全方案
- Adobe Color:可提取图片主色调
- Culori.js 或 Chroma.js 相关工具网站
示例:
假设我们创建一个从深蓝到浅青的渐变色图,收集到的十六进制代码如下:

提示:记下的顺序应该是从最小值到最大值(或从负到正)的渐变顺序。
步骤二:十六进制 → RGB 整数转换
十六进制代码(如 #ff5733)需要转换为三个 0-255 的整数(R、G、B)。
方法 A:使用在线批量转换工具(推荐)
打开浏览器,搜索 “Hex to RGB bulk converter” 或访问以下工具:
- WebFX Color Converter:支持批量输入多行十六进制代码
- W3Schools Colors Converter:逐个转换但非常可靠
- codebeautify.org:可批量处理
操作流程:
- 在输入框中粘贴你的十六进制列表(每行一个,带
#号或去掉均可):

- 点击 “Convert” 或 “批量转换”
- 复制输出的 RGB 值(通常是
rgb(13, 27, 42)格式或 CSV 格式)
方法 B:Excel 公式直转(无需外部工具)
如果你不想用在线工具,可以直接在 Excel 中解析十六进制:
假设十六进制 #0d1b2a 在 A1 单元格(去掉 # 号):
| 列 | 公式 | 说明 |
|---|---|---|
| R (B1) | =HEX2DEC(LEFT(A1,2)) | 提取前两位转为十进制 |
| G (C1) | =HEX2DEC(MID(A1,3,2)) | 提取中间两位 |
| B (D1) | =HEX2DEC(RIGHT(A1,2)) | 提取最后两位 |
注意:Excel 的 HEX2DEC 函数要求十六进制字符串不带 # 号。
步骤三:Excel 归一化处理(0-1 范围)
这是最关键的一步。COMSOL 要求颜色表中的 RGB 值必须是 0 到 1 之间的浮点数,而不是 0-255 的整数。
操作流程:
- 在 Excel 中建立工作表:
| 色节点 | Hex | R (0-255) | G (0-255) | B (0-255) | R_norm | G_norm | B_norm |
|---|---|---|---|---|---|---|---|
| 1 | 0d1b2a | 13 | 27 | 42 | |||
| 2 | 1b3a4b | 27 | 58 | 75 | |||
| 3 | 006466 | 0 | 100 | 102 |
2.输入归一化公式: 在 R_norm 列(假设为 E2 单元格)输入:

3.向下填充: 选中公式单元格,双击右下角填充柄,自动计算所有行的归一化值。
4.格式化数值(重要): COMSOL 支持小数点后 4-6 位精度即可。选中归一化列,设置单元格格式 → 数值 → 小数位数 4 或 5 位。
示例结果: 

步骤四:生成 COMSOL 可用的 TXT 文件
COMSOL 的颜色表文件是纯文本,格式要求:
- 每行三个数字,分别代表 R、G、B
- 用空格分隔
- 不要标题行
- 不要用逗号分隔(除非是
.csv后缀但 COMSOL 官方推荐.txt)
操作流程:
- 在 Excel 中仅保留归一化列: 复制
R_norm、G_norm、B_norm三列,选择性粘贴为数值到新区域(去除公式)。 - 组合数据(可选但推荐): 如果 COMSOL 版本较旧,可能需要固定格式。可以直接复制三列到记事本,Tab 会被视为空格。
- 导入记事本: 打开记事本(Notepad)或 VS Code,粘贴数据。确保格式如下:

- 保存文件:
- 文件名示例:
my_cool_colormap.txt - 编码选择:UTF-8(默认即可)
- 文件名示例:
步骤五:在 COMSOL 中导入并使用
- 在 COMSOL 中调用:
- 添加一个二维/三维绘图组(如表面图)
- 在颜色表设置(Color Table)中,最右侧有个导入按钮,点击
- 选择刚保存的归一化颜色表txt文件名
- 确保勾选平滑过渡(Smooth)以获得更柔和的渐变

进阶技巧:创建专业级色图
技巧 1:使用更多的节点
虽然 3-5 个颜色可以做简单渐变,但专业色图通常需要 7-15 个节点以避免色带(banding)。建议使用 Coolors 的 “Steps” 功能生成中间色。
技巧 2:创建发散色图(Diverging Colormap)
对于包含正负值的数据(如应力、压力差),建议对称地设置颜色:
- 负值端:冷色(蓝)
- 零值:中性色(白/灰)
- 正值端:暖色(红)
在 Excel 中,确保归一化后的零值点物理上位于文件中间行。
技巧 3:颜色插值的一致性
COMSOL 默认会在你提供的节点间进行线性插值。如果你想严格控制某个颜色出现在特定的归一化位置(比如 0.5 处必须是白色),你需要在 Excel 中插入额外的行来固定该点。
技巧 4:透明度(Alpha)通道(高级)
从 COMSOL 5.5 版开始,支持 RGBA 格式(增加第四列 Alpha 透明度,0-1)。如需部分透明效果,可在 Excel 中添加第四列 Alpha_norm。
完整示例:海洋蓝到翡翠绿的渐变
原始十六进制(来自 ColorBrewer YlGnBu 调色板):

Excel 中的转换过程:
| Hex | R | G | B | R_norm | G_norm | B_norm |
|---|---|---|---|---|---|---|
| ffffcc | 255 | 255 | 204 | 1.0000 | 1.0000 | 0.8000 |
| c7e9b4 | 199 | 233 | 180 | 0.7804 | 0.9137 | 0.7059 |
| 7fcdbb | 127 | 205 | 187 | 0.4980 | 0.8039 | 0.7333 |
| 41b6c4 | 65 | 182 | 196 | 0.2549 | 0.7137 | 0.7686 |
| 1d91c0 | 29 | 145 | 192 | 0.1137 | 0.5686 | 0.7529 |
| 225ea8 | 34 | 94 | 168 | 0.1333 | 0.3686 | 0.6588 |
最终的 ocean_emerald.txt:

将此文件保存到 COMSOL colors 目录后,你就可以在表面图中选择这个自定义色表,获得比默认 Rainbow 更适合展示温度或浓度场的配色。
常见问题解答(FAQ)
Q1:我可以直接用十六进制代码吗? A:不可以。COMSOL 颜色表必须接受归一化的十进制 RGB 值(0-1)。
Q2:颜色顺序有什么讲究? A:COMSOL 将第一行映射到 color range 的最小值,最后一行映射到最大值。确保你的颜色逻辑顺序与数据范围对应。
Q3:为什么我的色表显示为黑白色? A:检查是否有归一化值超出了 0-1 范围(Excel 公式错误导致的大于 1 或负数)。COMSOL 会截断越界值,可能导致显示异常。
结语
掌握了这套”设计网站 → 在线转换 → Excel 归一化 → TXT 导出”的工作流,你就能像专业可视化设计师一样,为仿真结果匹配最合适的色彩语言。不再受限于默认的 Rainbow 色表,让科学数据以最清晰、最美观的方式呈现。
现在,打开配色网站,挑选一套你喜欢的渐变色,开始制作你的第一个 COMSOL 自定义色表吧!
关注公众号发送:COMSOL自定义颜色表 获得做好的excel文档
通过网盘分享的文件:COMSOL自定义颜色表处理.xlsx 链接: https://pan.baidu.com/s/1XkQc__MYKjuNqwpEOkBVpA?pwd=wjvd 提取码: wjvd

