自定义颜色条 (Colorbar) 绘制与 SVG 导出
这是组内用于生成高精度自定义颜色条的 Python 脚本。该脚本基于 Matplotlib,支持精确的颜色映射(如 DiscoClassic),并可直接导出为矢量图供后期排版使用,无需在 COMSOL 等软件内截图。
⬇️ 下载原始 Jupyter Notebook (.ipynb) 文件 🚀 在线运行 (Google Colab)
💻 核心源代码
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.colorbar as colorbar
import numpy as np
# 创建一个图形和一个轴来放置颜色条
# fig: 整个窗口或页面
# ax: 绘制图表的区域
fig, ax = plt.subplots(figsize=(1.5, 8))
fig.subplots_adjust(left=0.5)
# 创建一个自定义的颜色映射来精确匹配 "DiscoClassic"
# 颜色渐变: 蓝色 -> 青色 -> 品红色 -> 红色
colors_list = ['blue', 'cyan', 'magenta', 'red']
custom_cmap = colors.LinearSegmentedColormap.from_list(
'disco_classic_custom', colors_list)
# 定义颜色条的刻度范围 (0 到 0.16)
vmin = 0
vmax = 0.16
norm = colors.Normalize(vmin=vmin, vmax=vmax)
# 创建颜色条
# 使用 ColorbarBase 允许我们在没有主图的情况下单独绘制颜色条
cb = colorbar.ColorbarBase(ax, cmap=custom_cmap,
norm=norm,
orientation='vertical')
# 设置刻度:从 0 到 0.16,步长为 0.02
ticks = np.arange(vmin, vmax + 0.01, 0.02)
cb.set_ticks(ticks)
# 将图形保存为 SVG 矢量图文件
# bbox_inches='tight' 会自动裁剪掉图像周围多余的空白
plt.savefig('colorbar_discoclassic.svg', format='svg', bbox_inches='tight')
# print("SVG 文件已成功保存!")