mcpField
S
scientific-visualization

scientific-visualization

github.com/davila7数据与数据库33.0k1.6k 次安装今天更新
代码仓库

关于 scientific-visualization

用于借助 Python 绘图库制作和检查适合发表的科学图表,面向研究人员,涵盖无障碍设计、多面板布局和期刊格式导出。

主要功能

  1. 01期刊专用样式与尺寸
  2. 02多面板图表布局
  3. 03色盲友好配色与灰度检查
  4. 04导出矢量和栅格格式
  5. 05统计标注建议

适用场景

  1. 01准备期刊投稿图表
  2. 02制作多面板研究图
  3. 03改善图表的色彩可访问性
  4. 04按期刊规范导出图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill scientific-visualization

安装后在 Claude Code 中输入/scientific-visualization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
color_palettes.py
nature.mplstyle
presentation.mplstyle
publication.mplstyle
references/
color_palettes.md
journal_requirements.md
matplotlib_examples.md
publication_guidelines.md
scripts/
figure_export.py
style_presets.py

详细介绍

科学可视化

概述

科学可视化将数据转换为清晰、准确的出版级图表。创建可直接用于期刊的图表,包括多面板布局、误差线、显著性标记和色盲友好型配色方案。使用 matplotlib、seaborn 和 plotly 导出为 PDF/EPS/TIFF 格式,用于论文。

何时使用此技能

以下情况应使用此技能:

  • 为科学论文创建图表或可视化内容
  • 准备期刊投稿所需的图片(Nature、Science、Cell、PLOS 等)
  • 确保图片对色盲人士友好且易于访问
  • 创建样式一致的多面板图片
  • 按正确的分辨率和格式导出图片
  • 遵循特定的出版指南
  • 改进现有图片,使其符合出版标准
  • 创建需同时适用于彩色和灰度模式的图片

快速入门指南

基本出版级图片
import matplotlib.pyplot as plt
import numpy as np

# Apply publication style (from scripts/style_presets.py)
from style_presets import apply_publication_style
apply_publication_style('default')

# Create figure with appropriate size (single column = 3.5 inches)
fig, ax = plt.subplots(figsize=(3.5, 2.5))

# Plot data
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')

# Proper labeling with units
ax.set_xlabel('Time (seconds)')
ax.set_ylabel('Amplitude (mV)')
ax.legend(frameon=False)

# Remove unnecessary spines
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# Save in publication formats (from scripts/figure_export.py)
from figure_export import save_publication_figure
save_publication_figure(fig, 'figure1', formats=['pdf', 'png'], dpi=300)
使用预配置样式

使用 assets/ 中的 matplotlib 样式文件应用期刊专属样式:

import matplotlib.pyplot as plt

# Option 1: Use style file directly
plt.style.use('assets/nature.mplstyle')

# Option 2: Use style_presets.py helper
from style_presets import configure_for_journal
configure_for_journal('nature', figure_width='single')

# Now create figures - they'll automatically match Nature specifications
fig, ax = plt.subplots()
# ... your plotting code ...
使用 Seaborn 快速入门

对于统计图表,使用带有出版样式的 seaborn:

import seaborn as sns
import matplotlib.pyplot as plt
from style_presets import apply_publication_style

# Apply publication style
apply_publication_style('default')
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
sns.set_palette('colorblind')

# Create statistical comparison figure
fig, ax = plt.subplots(figsize=(3.5, 3))
sns.boxplot(data=df, x='treatment', y='response', 
            order=['Control', 'Low', 'High'], palette='Set2', ax=ax)
sns.stripplot(data=df, x='treatment', y='response',
              order=['Control', 'Low', 'High'], 
              color='black', alpha=0.3, size=3, ax=ax)
ax.set_ylabel('Response (μM)')
sns.despine()

# Save figure
from figure_export import save_publication_figure
save_publication_figure(fig, 'treatment_comparison', formats=['pdf', 'png'], dpi=300)

核心原则与最佳实践

1. 分辨率和文件格式

关键要求(详见 references/publication_guidelines.md):

  • 栅格图像(照片、显微图像):300-600 DPI
  • 线条图(图形、图表):600-1200 DPI 或矢量格式
  • 矢量格式(首选):PDF、EPS、SVG
  • 栅格格式:TIFF、PNG(科学数据绝不使用 JPEG)

实现方式:

# Use the figure_export.py script for correct settings
from figure_export import save_publication_figure

# Saves in multiple formats with proper DPI
save_publication_figure(fig, 'myfigure', formats=['pdf', 'png'], dpi=300)

# Or save for specific journal requirements
from figure_export import save_for_journal
save_for_journal(fig, 'figure1', journal='nature', figure_type='combination')
2. 颜色选择——兼顾色盲可访问性

始终使用色盲友好型配色方案(详见 references/color_palettes.md):

推荐:Okabe-Ito 配色方案(所有类型的色盲人士均可区分):

# Option 1: Use assets/color_palettes.py
from color_palettes import OKABE_ITO_LIST, apply_palette
apply_palette('okabe_ito')

# Option 2: Manual specification
okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
             '#0072B2', '#D55E00', '#CC79A7', '#000000']
plt.rcParams['axes.prop_cycle'] = plt.cycler(color=okabe_ito)

用于热图/连续数据:

  • 使用感知均匀的颜色映射:viridis、plasma、cividis
  • 避免使用红绿发散型颜色映射(改用 PuOr、RdBu、BrBG)
  • 绝不使用 jet 或 rainbow 颜色映射

始终在灰度模式下检查图片,确保其可读性。

3. 字体排印与文本

字体指南(详见 references/publication_guidelines.md):

  • 无衬线字体:Arial、Helvetica、Calibri
  • 最终印刷尺寸的最小字号:
    • 坐标轴标签:7-9 pt
    • 刻度标签:6-8 pt
    • 面板标签:8-12 pt(粗体)
  • 标签使用句首字母大写格式:"Time (hours)",而非 "TIME (HOURS)"
  • 始终在括号中注明单位

实现方式:

# Set fonts globally
import matplotlib as mpl
mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = ['Arial', 'Helvetica']
mpl.rcParams['font.size'] = 8
mpl.rcParams['axes.labelsize'] = 9
mpl.rcParams['xtick.labelsize'] = 7
mpl.rcParams['ytick.labelsize'] = 7
4. 图片尺寸

各期刊专属宽度(详见 references/journal_requirements.md):

  • Nature:单栏 89 mm,双栏 183 mm
  • Science:单栏 55 mm,双栏 175 mm
  • Cell:单栏 85 mm,双栏 178 mm

检查图片尺寸是否符合要求:

from figure_export import check_figure_size

fig = plt.figure(figsize=(3.5, 3))  # 89 mm for Nature
check_figure_size(fig, journal='nature')
5. 多面板图片

最佳实践:

  • 使用粗体字母标注面板:A、B、C(大多数期刊使用大写字母,Nature 使用小写字母)
  • 确保所有面板的样式一致
  • 尽可能沿边缘对齐面板
  • 在面板之间留出适当的空白

实现示例(完整代码请参见 references/matplotlib_examples.md):

from string import ascii_uppercase

fig = plt.figure(figsize=(7, 4))
gs = fig.add_gridspec(2, 2, hspace=0.4, wspace=0.4)

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
# ... create other panels ...

# Add panel labels
for i, ax in enumerate([ax1, ax2, ...]):
    ax.text(-0.15, 1.05, ascii_uppercase[i], transform=ax.transAxes,
            fontsize=10, fontweight='bold', va='top')

常见任务

任务 1:创建可用于出版的折线图

完整代码请参见 references/matplotlib_examples.md 中的示例 1。

关键步骤:

  1. 应用出版样式
  2. 根据目标期刊设置合适的图片尺寸
  3. 使用色盲友好型颜色
  4. 添加正确表示方式的误差线(SEM、SD 或 CI)
  5. 为坐标轴标注单位
  6. 移除不必要的边框线
  7. 以矢量格式保存

使用 seaborn 自动生成置信区间:

import seaborn as sns
fig, ax = plt.subplots(figsize=(5, 3))
sns.lineplot(data=timeseries, x='time', y='measurement',
             hue='treatment', errorbar=('ci', 95), 
             markers=True, ax=ax)
ax.set_xlabel('Time (hours)')
ax.set_ylabel('Measurement (AU)')
sns.despine()
任务 2:创建多面板图片

完整代码请参见 references/matplotlib_examples.md 中的示例 2。

关键步骤:

  1. 使用 GridSpec 灵活安排布局
  2. 确保各面板的样式一致
  3. 添加粗体面板标签(A、B、C 等)
  4. 对齐相关面板
  5. 确保所有文本在最终尺寸下均清晰可读
任务 3:使用合适的色图创建热图

完整代码请参阅 references/matplotlib_examples.md 中的示例 4。

关键步骤:

  1. 使用感知均匀的色图(viridis、plasma、cividis)
  2. 添加带标签的颜色条
  3. 对于发散数据,使用适合色盲用户的发散色图(RdBu_r、PuOr)
  4. 为发散色图设置合适的中心值
  5. 在灰度模式下测试外观

使用 seaborn 绘制相关矩阵:

import seaborn as sns
fig, ax = plt.subplots(figsize=(5, 4))
corr = df.corr()
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(corr, mask=mask, annot=True, fmt='.2f',
            cmap='RdBu_r', center=0, square=True,
            linewidths=1, cbar_kws={'shrink': 0.8}, ax=ax)
任务 4:为特定期刊准备图表

工作流:

  1. 查看期刊要求:references/journal_requirements.md
  2. 配置 matplotlib 以符合期刊要求:
    from style_presets import configure_for_journal
    configure_for_journal('nature', figure_width='single')
    
  3. 创建图表(将自动调整为合适的大小)
  4. 按照期刊规范导出:
    from figure_export import save_for_journal
    save_for_journal(fig, 'figure1', journal='nature', figure_type='line_art')
    
任务 5:修正现有图表,使其符合出版标准

检查清单(完整清单见 references/publication_guidelines.md):

  1. 检查分辨率:确认 DPI 符合期刊要求
  2. 检查文件格式:绘图使用矢量格式,图像使用 TIFF/PNG
  3. 检查颜色:确保适合色盲用户
  4. 检查字体:最终尺寸下至少为 6-7 pt,并使用无衬线字体
  5. 检查标签:所有坐标轴均标注名称和单位
  6. 检查尺寸:与期刊栏宽一致
  7. 测试灰度效果:确保图表在无彩色的情况下仍易于解读
  8. 移除图表赘饰:不使用不必要的网格、3D 效果和阴影
任务 6:创建适合色盲用户的可视化图表

策略:

  1. 使用 assets/color_palettes.py 中的推荐调色板
  2. 添加冗余编码(线条样式、标记、图案)
  3. 使用色盲模拟器进行测试
  4. 确保兼容灰度模式

示例:

from color_palettes import apply_palette
import matplotlib.pyplot as plt

apply_palette('okabe_ito')

# Add redundant encoding beyond color
line_styles = ['-', '--', '-.', ':']
markers = ['o', 's', '^', 'v']

for i, (data, label) in enumerate(datasets):
    plt.plot(x, data, linestyle=line_styles[i % 4],
             marker=markers[i % 4], label=label)

统计严谨性

始终包含:

  • 误差线(SD、SEM 或 CI——在图注中注明具体类型)
  • 图表或图注中的样本量(n)
  • 统计显著性标记(、、)
  • 条件允许时显示各个数据点(而非仅显示汇总统计量)

含统计信息的示例:

# Show individual points with summary statistics
ax.scatter(x_jittered, individual_points, alpha=0.4, s=8)
ax.errorbar(x, means, yerr=sems, fmt='o', capsize=3)

# Mark significance
ax.text(1.5, max_y * 1.1, '***', ha='center', fontsize=8)

使用不同绘图库

Matplotlib
  • 对出版细节的控制最全面
  • 最适合复杂的多面板图表
  • 使用提供的样式文件,以保持格式一致
  • 大量示例请参阅 references/matplotlib_examples.md
Seaborn

Seaborn 构建于 matplotlib 之上,为统计图表提供高级、面向数据集的接口。它能够以最少的代码创建适合出版的统计可视化图表,同时完全兼容 matplotlib 的自定义功能。

用于科学可视化的主要优势:

  • 自动进行统计估算并计算置信区间
  • 内置多面板图表(分面)支持
  • 默认使用适合色盲用户的调色板
  • 使用 pandas DataFrame 的面向数据集 API
  • 将变量映射到视觉属性的语义映射
使用出版样式快速入门

始终先应用 matplotlib 出版样式,再配置 seaborn:

import seaborn as sns
import matplotlib.pyplot as plt
from style_presets import apply_publication_style

# Apply publication style
apply_publication_style('default')

# Configure seaborn for publication
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
sns.set_palette('colorblind')  # Use colorblind-safe palette

# Create figure
fig, ax = plt.subplots(figsize=(3.5, 2.5))
sns.scatterplot(data=df, x='time', y='response', 
                hue='treatment', style='condition', ax=ax)
sns.despine()  # Remove top and right spines
出版物中常见的图表类型

统计比较:

# Box plot with individual points for transparency
fig, ax = plt.subplots(figsize=(3.5, 3))
sns.boxplot(data=df, x='treatment', y='response', 
            order=['Control', 'Low', 'High'], palette='Set2', ax=ax)
sns.stripplot(data=df, x='treatment', y='response',
              order=['Control', 'Low', 'High'], 
              color='black', alpha=0.3, size=3, ax=ax)
ax.set_ylabel('Response (μM)')
sns.despine()

分布分析:

# Violin plot with split comparison
fig, ax = plt.subplots(figsize=(4, 3))
sns.violinplot(data=df, x='timepoint', y='expression',
               hue='treatment', split=True, inner='quartile', ax=ax)
ax.set_ylabel('Gene Expression (AU)')
sns.despine()

相关矩阵:

# Heatmap with proper colormap and annotations
fig, ax = plt.subplots(figsize=(5, 4))
corr = df.corr()
mask = np.triu(np.ones_like(corr, dtype=bool))  # Show only lower triangle
sns.heatmap(corr, mask=mask, annot=True, fmt='.2f',
            cmap='RdBu_r', center=0, square=True,
            linewidths=1, cbar_kws={'shrink': 0.8}, ax=ax)
plt.tight_layout()

带置信带的时间序列:

# Line plot with automatic CI calculation
fig, ax = plt.subplots(figsize=(5, 3))
sns.lineplot(data=timeseries, x='time', y='measurement',
             hue='treatment', style='replicate',
             errorbar=('ci', 95), markers=True, dashes=False, ax=ax)
ax.set_xlabel('Time (hours)')
ax.set_ylabel('Measurement (AU)')
sns.despine()
使用 Seaborn 创建多面板图表

使用 FacetGrid 自动创建分面:

# Create faceted plot
g = sns.relplot(data=df, x='dose', y='response',
                hue='treatment', col='cell_line', row='timepoint',
                kind='line', height=2.5, aspect=1.2,
                errorbar=('ci', 95), markers=True)
g.set_axis_labels('Dose (μM)', 'Response (AU)')
g.set_titles('{row_name} | {col_name}')
sns.despine()

# Save with correct DPI
from figure_export import save_publication_figure
save_publication_figure(g.figure, 'figure_facets', 
                       formats=['pdf', 'png'], dpi=300)

将 seaborn 与 matplotlib 子图结合使用:

# Create custom multi-panel layout
fig, axes = plt.subplots(2, 2, figsize=(7, 6))

# Panel A: Scatter with regression
sns.regplot(data=df, x='predictor', y='response', ax=axes[0, 0])
axes[0, 0].text(-0.15, 1.05, 'A', transform=axes[0, 0].transAxes,
                fontsize=10, fontweight='bold')

# Panel B: Distribution comparison
sns.violinplot(data=df, x='group', y='value', ax=axes[0, 1])
axes[0, 1].text(-0.15, 1.05, 'B', transform=axes[0, 1].transAxes,
                fontsize=10, fontweight='bold')

# Panel C: Heatmap
sns.heatmap(correlation_data, cmap='viridis', ax=axes[1, 0])
axes[1, 0].text(-0.15, 1.05, 'C', transform=axes[1, 0].transAxes,
                fontsize=10, fontweight='bold')

# Panel D: Time series
sns.lineplot(data=timeseries, x='time', y='signal', 
             hue='condition', ax=axes[1, 1])
axes[1, 1].text(-0.15, 1.05, 'D', transform=axes[1, 1].transAxes,
                fontsize=10, fontweight='bold')

plt.tight_layout()
sns.despine()
适合出版物的调色板

Seaborn 内置了多种适合色盲用户的调色板:

# Use built-in colorblind palette (recommended)
sns.set_palette('colorblind')

# Or specify custom colorblind-safe colors (Okabe-Ito)
okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
             '#0072B2', '#D55E00', '#CC79A7', '#000000']
sns.set_palette(okabe_ito)

# For heatmaps and continuous data
sns.heatmap(data, cmap='viridis')  # Perceptually uniform
sns.heatmap(corr, cmap='RdBu_r', center=0)  # Diverging, centered
如何选择 Axes 级和 Figure 级函数

Axes 级函数(例如,scatterplot、boxplot、heatmap):

  • 适用于构建自定义多面板布局
  • 接受 ax= 参数,可精确控制放置位置
  • 与 matplotlib 子图的集成效果更好
  • 对图表构成的控制力更强
fig, ax = plt.subplots(figsize=(3.5, 2.5))
sns.scatterplot(data=df, x='x', y='y', hue='group', ax=ax)

Figure 级函数(例如,relplot、catplot、displot):

  • 适用于按分类变量自动创建分面
  • 可创建样式一致的完整图表
  • 非常适合探索性分析
  • 使用 height 和 aspect 设置尺寸
g = sns.relplot(data=df, x='x', y='y', col='category', kind='scatter')
使用 Seaborn 保证统计严谨性

Seaborn 会自动计算并显示不确定性:

# Line plot: shows mean ± 95% CI by default
sns.lineplot(data=df, x='time', y='value', hue='treatment',
             errorbar=('ci', 95))  # Can change to 'sd', 'se', etc.

# Bar plot: shows mean with bootstrapped CI
sns.barplot(data=df, x='treatment', y='response',
            errorbar=('ci', 95), capsize=0.1)

# Always specify error type in figure caption:
# "Error bars represent 95% confidence intervals"
绘制可用于发表的 Seaborn 图表的最佳实践
  1. 始终先设置发表主题:

    sns.set_theme(style='ticks', context='paper', font_scale=1.1)
    
  2. 使用色盲友好型调色板:

    sns.set_palette('colorblind')
    
  3. 移除不必要的元素:

    sns.despine()  # Remove top and right spines
    
  4. 适当控制图表尺寸:

    # Axes-level: use matplotlib figsize
    fig, ax = plt.subplots(figsize=(3.5, 2.5))
    
    # Figure-level: use height and aspect
    g = sns.relplot(..., height=3, aspect=1.2)
    
  5. 尽可能显示单个数据点:

    sns.boxplot(...)  # Summary statistics
    sns.stripplot(..., alpha=0.3)  # Individual points
    
  6. 添加包含单位的适当标签:

    ax.set_xlabel('Time (hours)')
    ax.set_ylabel('Expression (AU)')
    
  7. 以正确的分辨率导出:

    from figure_export import save_publication_figure
    save_publication_figure(fig, 'figure_name', 
                           formats=['pdf', 'png'], dpi=300)
    
Seaborn 高级技巧

用于探索性分析的成对关系:

# Quick overview of all relationships
g = sns.pairplot(data=df, hue='condition', 
                 vars=['gene1', 'gene2', 'gene3'],
                 corner=True, diag_kind='kde', height=2)

层次聚类热图:

# Cluster samples and features
g = sns.clustermap(expression_data, method='ward', 
                   metric='euclidean', z_score=0,
                   cmap='RdBu_r', center=0, 
                   figsize=(10, 8), 
                   row_colors=condition_colors,
                   cbar_kws={'label': 'Z-score'})

带边缘分布的联合分布图:

# Bivariate distribution with context
g = sns.jointplot(data=df, x='gene1', y='gene2',
                  hue='treatment', kind='scatter',
                  height=6, ratio=4, marginal_kws={'kde': True})
Seaborn 常见问题与解决方案

问题:图例位于绘图区外

g = sns.relplot(...)
g._legend.set_bbox_to_anchor((0.9, 0.5))

问题:标签重叠

plt.xticks(rotation=45, ha='right')
plt.tight_layout()

问题:最终尺寸下文字太小

sns.set_context('paper', font_scale=1.2)  # Increase if needed
更多资源

如需了解更多 Seaborn 信息,请参阅:

  • scientific-packages/seaborn/SKILL.md - Seaborn 综合文档
  • scientific-packages/seaborn/references/examples.md - 实用案例
  • scientific-packages/seaborn/references/function_reference.md - 完整 API 参考
  • scientific-packages/seaborn/references/objects_interface.md - 现代声明式 API
Plotly
  • 用于探索的交互式图表
  • 导出静态图像以供发表
  • 配置为满足发表质量要求:
fig.update_layout(
    font=dict(family='Arial, sans-serif', size=10),
    plot_bgcolor='white',
    # ... see matplotlib_examples.md Example 8
)
fig.write_image('figure.png', scale=3)  # scale=3 gives ~300 DPI

资源

参考资料目录

根据需要加载以下内容以获取详细信息:

  • publication_guidelines.md:全面的最佳实践

    • 分辨率和文件格式要求
    • 排版指南
    • 布局和构图规则
    • 统计严谨性要求
    • 完整的发表检查清单
  • color_palettes.md:色彩使用指南

    • 含 RGB 值的色盲友好型调色板规范
    • 顺序和发散型色图建议
    • 无障碍测试流程
    • 特定领域的调色板(基因组学、显微镜)
  • journal_requirements.md:期刊特定规范

    • 各出版商的技术要求
    • 文件格式和 DPI 规范
    • 图表尺寸要求
    • 快速参考表
  • matplotlib_examples.md:实用代码示例

    • 10 个完整的可运行示例
    • 折线图、条形图、热图、多面板图
    • 期刊特定的图表示例
    • 各库的使用技巧(matplotlib、seaborn、plotly)
脚本目录

使用这些辅助脚本实现自动化:

  • figure_export.py:导出工具

    • save_publication_figure():以正确的 DPI 保存为多种格式
    • save_for_journal():自动采用期刊特定要求
    • check_figure_size():检查尺寸是否符合期刊规范
    • 直接运行:python scripts/figure_export.py 查看示例
  • style_presets.py:预配置样式

    • apply_publication_style():应用预设样式(default、nature、science、cell)
    • set_color_palette():快速切换调色板
    • configure_for_journal():通过一条命令配置期刊样式
    • 直接运行:python scripts/style_presets.py 查看示例
资源文件目录

在图表中使用这些文件:

  • color_palettes.py:可导入的颜色定义

    • 所有推荐的调色板均以 Python 常量形式提供
    • apply_palette() 辅助函数
    • 可直接导入笔记本或脚本
  • Matplotlib 样式文件:与 plt.style.use() 配合使用

    • publication.mplstyle:通用发表质量样式
    • nature.mplstyle:Nature 期刊规范
    • presentation.mplstyle:适用于海报和幻灯片的较大字体

工作流概述

创建出版用图表的推荐工作流:

  1. 规划:确定目标期刊、图表类型和内容
  2. 配置:应用适合期刊的样式
    from style_presets import configure_for_journal
    configure_for_journal('nature', 'single')
    
  3. 创建:制作图表,并设置恰当的标签、颜色和统计信息
  4. 验证:检查尺寸、字体、颜色和无障碍性
    from figure_export import check_figure_size
    check_figure_size(fig, journal='nature')
    
  5. 导出:以所需格式保存
    from figure_export import save_for_journal
    save_for_journal(fig, 'figure1', 'nature', 'combination')
    
  6. 审阅:结合稿件上下文,以最终尺寸查看

应避免的常见问题

  1. 字体过小:以最终尺寸打印时,文字难以辨认
  2. JPEG 格式:切勿将 JPEG 用于图形或绘图(会产生伪影)
  3. 红绿色:约 8% 的男性无法区分
  4. 分辨率过低:图表在出版物中会出现像素化
  5. 缺少单位:始终为坐标轴标注单位
  6. 3D 效果:会扭曲感知,应完全避免
  7. 图表杂项:移除不必要的网格线和装饰
  8. 截断坐标轴:除非有科学依据,否则柱状图应从零开始
  9. 样式不一致:同一篇稿件中的图表使用了不同的字体或颜色
  10. 没有误差线:始终显示不确定性

最终检查清单

提交图表前,请确认:

  • 分辨率符合期刊要求(300+ DPI)
  • 文件格式正确(绘图使用矢量格式,图像使用 TIFF)
  • 图表尺寸符合期刊规格
  • 所有文字在最终尺寸下都清晰可读(≥6 pt)
  • 颜色对色盲人士友好
  • 图表在灰度模式下仍然清晰
  • 所有坐标轴均标注了单位
  • 已添加误差线,并在图注中说明其定义
  • 面板标签齐全且一致
  • 没有图表杂项或 3D 效果
  • 所有图表的字体保持一致
  • 显著性已清晰标注
  • 图例清晰完整

使用此技能,确保科学图表达到最高出版标准,同时让所有读者都能轻松阅读。

评论

支持 Markdown