SuperAPI AI 工具集

scientific-visualization

数据与分析

查看项目

更新于 10-16 04:37

技能介绍

用途

Scientific Visualization 是一个用于生成「可直接投稿」科学图表的元技能。它把数据可视化的常见科研需求——多子图布局、误差线、显著性标记、色盲友好配色、期刊尺寸与格式规范——打包成一套可复用的样式与脚本,让研究者用 matplotlib、seaborn、plotly 产出符合期刊要求的图形。

适用场景

资料列出以下典型使用时机:

  • 为科学论文创建图表或可视化
  • 准备投稿用图(Nature、Science、Cell、PLOS 等)
  • 确保图表对色盲友好、具备可访问性
  • 制作风格统一的多子图
  • 以正确的分辨率与格式导出图形
  • 遵循特定的投稿指南
  • 把已有图形改进到符合发表标准
  • 制作在彩色和灰度下都能解读的图形

主要能力

1. 分辨率与文件格式

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

配套脚本 figure_export.py 提供 save_publication_figure 与 save_for_journal 用于按格式和 DPI 导出:

from figure_export import save_publication_figure
save_publication_figure(fig, 'myfigure', formats=['pdf', 'png'], dpi=300)

from figure_export import save_for_journal
save_for_journal(fig, 'figure1', journal='nature', figure_type='combination')

2. 配色与色盲可访问性

推荐 Okabe-Ito 调色板:

from color_palettes import OKABE_ITO_LIST, apply_palette
apply_palette('okabe_ito')

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. 字体与排版

  • 无衬线字体:Arial、Helvetica、Calibri
  • 最终印刷尺寸下的最小字号:轴标签 7–9 pt,刻度标签 6–8 pt,面板标签 8–12 pt(加粗)
  • 标签使用句首大写:"Time (hours)" 而非 "TIME (HOURS)"
  • 单位始终放在括号内
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. 图形尺寸(期刊)

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

可用 check_figure_size 检查尺寸合规性:

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 用小写)
  • 各面板保持风格一致,尽量沿边缘对齐,面板间留足空白
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])
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')

使用方式

技能通过样式预设、配色脚本与导出脚本组合使用。基本流程示例:

import matplotlib.pyplot as plt
import numpy as np
from style_presets import apply_publication_style
apply_publication_style('default')

fig, ax = plt.subplots(figsize=(3.5, 2.5))
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
ax.set_xlabel('Time (seconds)')
ax.set_ylabel('Amplitude (mV)')
ax.legend(frameon=False)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

from figure_export import save_publication_figure
save_publication_figure(fig, 'figure1', formats=['pdf', 'png'], dpi=300)

套用期刊样式:

plt.style.use('assets/nature.mplstyle')
# 或
from style_presets import configure_for_journal
configure_for_journal('nature', figure_width='single')

针对特定期刊的推荐流程:查阅 journal_requirements.md → 用 configure_for_journal 配置 → 创建图形 → 用 save_for_journal 导出。

统计严谨性

资料要求始终包含:误差线(SD、SEM 或 CI,并在图注中说明是哪种)、样本量 n、显著性标记(、、),以及在可能时展示个体数据点而非仅汇总统计。

ax.scatter(x_jittered, individual_points, alpha=0.4, s=8)
ax.errorbar(x, means, yerr=sems, fmt='o', capsize=3)
ax.text(1.5, max_y * 1.1, '***', ha='center', fontsize=8)

绘图库支持

  • matplotlib:对出版细节控制最强,适合复杂多子图,配合提供的样式文件使用。
  • seaborn:基于 matplotlib,面向数据集的高层统计绘图接口,自动估计与置信区间、内建分面、默认色盲友好调色板,适配 pandas DataFrame。建议先套用 matplotlib 出版样式再配置 seaborn。
  • plotly:资料提及用于导出,但未给出用法细节。

常见出版物图形包括统计比较(箱线图叠加散点)、分布分析(小提琴图)、相关性矩阵(热力图)、带置信带的时间序列等,资料给出了对应代码示例。

限制

资料未提供该技能的安装方式、价格、收费模式、平台或运行环境要求,这些信息暂未提供。分类、版本、依赖管理等信息在给定资料中也暂未说明。