科研图的配色不是简单地让图“好看”,而是让读者更快看懂数据关系。颜色承担着三件事:区分组别、表达强弱、强调重点。如果颜色过于杂乱,读者会先被视觉噪声干扰;如果颜色层次稳定,即使图形结构很简单,也能显得干净、专业。
人民币的纸币色系很适合拿来做科研图配色。它的优势不在于“直接吸取纸币上的某一个颜色”,而在于每个面额都有清晰的主色方向:100 元偏红、50 元偏绿、20 元偏棕、10 元偏蓝、5 元偏紫、1 元偏浅绿。把这些颜色整理成主色、辅助色、浅色和深色,就能形成一组可复用的科研图调色板。
人民币色系为什么适合科研绘图
科研图常见的问题有三类:
| 问题 | 图上的表现 | 解决思路 |
|---|---|---|
| 颜色太多 | 每个柱子、每条线都像随机选色 | 同一张图控制在 3~5 个主色以内 |
| 饱和度太高 | 颜色刺眼,文字和标注被抢走注意力 | 降低饱和度,用浅色做背景或误差范围 |
| 明度没有层次 | 主数据、辅助数据、背景看不出优先级 | 主色用于核心数据,浅色用于区间、背景、填充 |
人民币色系天然具备“主色明确、浅深可扩展、视觉记忆强”的特点。科研图中不需要完全复刻纸币颜色,只要保留色相方向,并控制明度和饱和度,就能得到稳定的图表风格。
一个实用的配色流程可以这样设计:
flowchart LR
A[确定图表目的] --> B{颜色用于什么}
B -->|区分组别| C[选择 3-5 个不同色相]
B -->|表达数值强弱| D[选择同一色系深浅梯度]
B -->|突出重点| E[主色突出 1 个核心对象]
C --> F[检查文字与背景对比度]
D --> F
E --> F
F --> G[导出前检查灰度和打印效果]
6 套人民币科研配色
颜色值采用 HEX(十六进制颜色值)格式,可以直接放进 Matplotlib、ggplot2、Origin、GraphPad Prism 等绘图工具。它们是基于人民币视觉印象整理出的近似科研图色值,使用时可按期刊版式继续微调。
100 元:红色系,适合突出核心结果
100 元的红色系适合用在需要强调的结果上,例如显著升高、关键实验组、核心算法、主要结论等。红色本身注意力很强,不建议大面积铺满整张图,更适合用作主色或强调色。
这组红色可以拆成深红、主红、浅红和淡红。深红适合线条或文字标注,主红适合柱状图和散点,浅红适合误差带、置信区间或背景填充。
| 用途 | 色值 |
|---|---|
| 深红 | #8E1B1B |
| 主红 | #C43A3A |
| 柔红 | #E77878 |
| 淡红 | #F2C4C4 |
| 深灰红 | #4A2A2A |
适合图形:
- 两组对比柱状图中的重点组
- 火山图中的显著上调点
- 折线图中的主曲线
- 机制图中的关键通路
50 元:绿色系,适合生物、生态、材料稳定性数据
50 元的绿色系比纯亮绿更沉稳,适合生物实验、生态环境、植物、药物响应、材料稳定性等场景。绿色在科研图里通常给人“正常、稳定、恢复、改善”的语义,但不要把绿色和红色强行组合成高饱和红绿对比,否则对红绿色弱读者不友好。
这组绿色适合做单色渐变,也适合和灰色、蓝色搭配。深绿色用于主曲线,浅绿色用于填充区域,灰绿色适合辅助数据。
| 用途 | 色值 |
|---|---|
| 深绿 | #1F6F4A |
| 主绿 | #4E9F6E |
| 柔绿 | #9AC79A |
| 淡绿 | #DCEBD7 |
| 灰绿 | #344C3A |
适合图形:
- 生长曲线
- 生存率曲线
- 生态指标变化
- 多处理组柱状图
20 元:棕色系,适合时间、土壤、沉积物、稳定趋势
20 元的棕色系偏暖,适合表达时间积累、土壤、沉积物、地理、历史数据,也适合做不想太抢眼的辅助图。棕色的优点是稳定,缺点是如果明度太低,容易显得沉闷,所以浅棕和米色很重要。
棕色系更适合作为“背景友好型”调色板。主棕用于核心数据,浅棕用于面积图或箱线图填充,深棕用于坐标轴和文字标注。
| 用途 | 色值 |
|---|---|
| 深棕 | #8A5A2B |
| 主棕 | #B98243 |
| 柔棕 | #D9A86C |
| 米棕 | #F0D3A6 |
| 深褐 | #4E3A29 |
适合图形:
- 时间序列面积图
- 土壤或地质指标图
- 累积量柱状图
- 背景较浅的箱线图
10 元:蓝色系,适合模型、算法、物理量和冷色主题
10 元的蓝色系是科研图中最通用的一类颜色。蓝色通常代表理性、稳定、计算、测量,适合模型预测、算法性能、物理量变化、临床指标等场景。
蓝色的兼容性很好,可以和红色组成正负对比,也可以和绿色组成多组对比。深蓝适合折线,主蓝适合散点,浅蓝适合置信区间。
| 用途 | 色值 |
|---|---|
| 深蓝 | #245D8C |
| 主蓝 | #3F8CC7 |
| 柔蓝 | #8EC3E6 |
| 淡蓝 | #D8ECF8 |
| 蓝灰 | #253B4D |
适合图形:
- 模型预测曲线
- ROC(受试者工作特征)曲线
- 折线图和散点图
- 冷色主题多面板图
5 元:紫色系,适合组学、神经科学和高维数据
5 元的紫色系比较适合做“科技感”更强的图,例如组学分析、神经科学、图网络、高维嵌入结果等。紫色本身辨识度高,但深紫如果用得太多,会让图显得压暗,所以要搭配浅紫和中性色。
紫色系在散点图和分组小提琴图中表现很好。主紫用于关键组别,浅紫用于密度区域,深紫用于边框或回归线。
| 用途 | 色值 |
|---|---|
| 深紫 | #5B3F8C |
| 主紫 | #7D63B8 |
| 柔紫 | #B6A3DE |
| 淡紫 | #E7DFF2 |
| 紫黑 | #34284D |
适合图形:
- UMAP(统一流形近似与投影)散点图
- PCA(主成分分析)散点图
- 小提琴图
- 多组分布图
1 元:浅绿色系,适合背景、辅助组和低强度数据
1 元的浅绿色系比 50 元绿色更轻,适合做背景色、辅助组、低强度组、对照组或柔和主题。浅绿色如果直接用于细线,可能不够清晰,最好搭配深绿或深灰作为边线。
这组颜色适合让图表变得轻盈。浅绿色可以承担填充和背景,深绿色负责保证可读性。
| 用途 | 色值 |
|---|---|
| 深浅绿 | #5E8F68 |
| 主浅绿 | #86B68D |
| 柔浅绿 | #BFD8B8 |
| 极浅绿 | #E8F2E4 |
| 绿灰 | #354D3A |
适合图形:
- 对照组填充
- 背景区间标注
- 低强度热图
- 轻量风格柱状图
不同图形怎么选色
配色不能只看颜色本身,还要看图表任务。相同的颜色,用在不同图形里效果差别很大。
| 图表类型 | 推荐用法 | 不推荐用法 |
|---|---|---|
| 柱状图 | 每个组别使用同一色系的深浅变化 | 每根柱子随机换色 |
| 折线图 | 主线用深色,辅助线用浅色或灰色 | 所有线都用高饱和颜色 |
| 散点图 | 类别少时用不同色系,类别多时降低透明度 | 10 类以上仍强行使用高饱和色 |
| 箱线图 | 边框深色,填充浅色 | 深色大面积填充导致中位线不清 |
| 热图 | 使用同一色系连续渐变 | 用无序颜色表达连续数值 |
| 机制图 | 主路径用强调色,背景模块用浅色 | 所有箭头和模块同等鲜艳 |
一张图里最重要的不是颜色数量,而是视觉秩序。主结果只需要 1 个最醒目的颜色,辅助信息可以用浅色、灰色或低透明度表达。
Matplotlib 中使用人民币配色
Python 绘图时,可以先把配色整理成字典,再按图表类型调用。Matplotlib 支持 HEX 色值,可以直接传给 color、facecolor、edgecolor 等参数。
import matplotlib.pyplot as plt
import numpy as np
rmb_palettes = {
"rmb_100_red": ["#8E1B1B", "#C43A3A", "#E77878", "#F2C4C4"],
"rmb_50_green": ["#1F6F4A", "#4E9F6E", "#9AC79A", "#DCEBD7"],
"rmb_20_brown": ["#8A5A2B", "#B98243", "#D9A86C", "#F0D3A6"],
"rmb_10_blue": ["#245D8C", "#3F8CC7", "#8EC3E6", "#D8ECF8"],
"rmb_5_purple": ["#5B3F8C", "#7D63B8", "#B6A3DE", "#E7DFF2"],
"rmb_1_light_green": ["#5E8F68", "#86B68D", "#BFD8B8", "#E8F2E4"],
}
x = np.arange(4)
y = [3.2, 4.5, 5.1, 6.3]
colors = rmb_palettes["rmb_10_blue"]
plt.figure(figsize=(5, 3.5))
plt.bar(
x,
y,
color=colors,
edgecolor="#253B4D",
linewidth=1.2
)
plt.xticks(x, ["A", "B", "C", "D"])
plt.ylabel("Value")
plt.title("RMB 10 Blue Palette")
plt.grid(axis="y", alpha=0.25)
plt.tight_layout()
plt.show()
折线图可以用深色做主线,浅色做误差带:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1, 8)
mean = np.array([1.2, 1.8, 2.4, 2.7, 3.2, 3.6, 4.0])
std = np.array([0.2, 0.3, 0.25, 0.35, 0.3, 0.4, 0.35])
main_color = "#C43A3A"
fill_color = "#F2C4C4"
plt.figure(figsize=(5, 3.5))
plt.plot(x, mean, color=main_color, linewidth=2.2, marker="o")
plt.fill_between(x, mean - std, mean + std, color=fill_color, alpha=0.55)
plt.xlabel("Time")
plt.ylabel("Response")
plt.title("Main Result Highlighted by RMB Red")
plt.grid(alpha=0.25)
plt.tight_layout()
plt.show()
ggplot2 中使用人民币配色
R 的 ggplot2 可以通过 scale_color_manual() 或 scale_fill_manual() 手动指定颜色。
library(ggplot2)
rmb_100_red <- c("#8E1B1B", "#C43A3A", "#E77878", "#F2C4C4")
df <- data.frame(
group = c("A", "B", "C", "D"),
value = c(3.2, 4.5, 5.1, 6.3)
)
ggplot(df, aes(x = group, y = value, fill = group)) +
geom_col(width = 0.65, color = "#4A2A2A", linewidth = 0.4) +
scale_fill_manual(values = rmb_100_red) +
theme_classic(base_size = 12) +
labs(x = NULL, y = "Value") +
theme(
legend.position = "none",
axis.text = element_text(color = "black"),
axis.title = element_text(color = "black")
)
多组折线图可以用蓝色系或绿色系:
library(ggplot2)
rmb_10_blue <- c("#245D8C", "#3F8CC7", "#8EC3E6")
df <- data.frame(
time = rep(1:5, 3),
value = c(1.1, 1.8, 2.4, 2.9, 3.5,
1.0, 1.5, 2.1, 2.6, 3.0,
0.9, 1.2, 1.8, 2.2, 2.7),
group = rep(c("Model A", "Model B", "Model C"), each = 5)
)
ggplot(df, aes(x = time, y = value, color = group)) +
geom_line(linewidth = 1.1) +
geom_point(size = 2.2) +
scale_color_manual(values = rmb_10_blue) +
theme_classic(base_size = 12) +
labs(x = "Time", y = "Value", color = NULL)
配色使用中的几个坑
1. 红色不要到处用
红色很适合强调显著差异,但如果图里每个元素都用红色,读者就分不清重点。更稳妥的做法是:核心组用红色,其他组用灰色、蓝色或浅色。
推荐:核心组 = 红色,其他组 = 灰色
不推荐:所有组都使用不同深浅的高饱和红
2. 浅色不能承担细线
淡蓝、淡绿、淡紫适合填充,不适合做 1 px 的细线。细线需要足够深的颜色,否则在投影、打印或缩小后会消失。
| 元素 | 推荐颜色 |
|---|---|
| 主曲线 | 深色或主色 |
| 误差带 | 淡色,透明度 0.3~0.6 |
| 边框 | 深色或深灰 |
| 背景区间 | 极浅色 |
3. 同一变量要保持同一颜色
如果 A 组在图 1 中是蓝色,在图 2 中又变成红色,读者需要重新理解图例。多面板图尤其要保持颜色一致。
Figure 1A: Control = 灰色,Treatment = 红色
Figure 1B: Control = 灰色,Treatment = 红色
Figure 1C: Control = 灰色,Treatment = 红色
4. 连续变量不要用离散色乱分
热图、浓度梯度、风险评分这类连续变量,更适合同一色系的明度变化。例如从淡蓝到深蓝表示数值升高,而不是用红、绿、紫、棕随机跳变。
5. 导出前检查灰度效果
很多论文图会被缩小、打印或以灰度形式查看。导出前可以把图转成灰度看一眼:如果不同组别完全糊在一起,就需要增加明度差异,或者加入线型、点型、纹理等非颜色编码。
一套可直接复用的选择规则
| 需求 | 推荐人民币色系 |
|---|---|
| 强调核心结果 | 100 元红色系 |
| 生物、生态、恢复趋势 | 50 元绿色系 |
| 土壤、沉积物、时间累积 | 20 元棕色系 |
| 模型、算法、测量数据 | 10 元蓝色系 |
| 组学、高维散点、神经科学 | 5 元紫色系 |
| 背景、对照、低强度辅助信息 | 1 元浅绿色系 |
科研图最稳定的配色策略,是先确定图中最重要的信息,再让颜色服务这个信息。人民币色系提供的是一组成熟的视觉起点:红色负责强调,蓝色负责理性表达,绿色负责稳定和生物语义,棕色适合沉稳数据,紫色适合高维和组学场景,浅绿色适合做轻量背景。把颜色数量控制住,把明度层次拉开,图表就会比随机配色清晰得多。





