本规范定义 PyThesisPlot 的科研图表样式标准,确保图表的专业性和一致性。
经典学术风格,适合正式论文。
colors = ['#2E5AAC', '#5B9BD5', '#A5D6F3', '#1F4E79', '#8FB8E6']高对比度,适合数据对比和演示。
colors = ['#E41A1C', '#377EB8', '#4DAF4A', '#984EA3', '#FF7F00']低饱和度,适合多组数据展示。
colors = ['#FBB4AE', '#B3CDE3', '#CCEBC5', '#DECBE4', '#FED9A6']colors = ['#E64B35', '#4DBBD5', '#00A087', '#3C5488', '#F39B7F']colors = ['#003399', '#CC0000', '#009900', '#FFCC00', '#9900CC']colors = ['#0066CC', '#CC0000', '#009900', '#FF9900', '#9900CC']黑白打印友好。
colors = ['#000000', '#404040', '#707070', '#A0A0A0', '#D0D0D0']colors = ['#D73027', '#F46D43', '#FDAE61', '#FEE090', '#FFFFBF']colors = ['#4575B4', '#74ADD1', '#ABD9E9', '#E0F3F8', '#FFFFBF']适用于正负值对比。
colors = ['#D73027', '#FC8D59', '#FEE090', '#91BFDB', '#4575B4']使用 ColorBrewer 推荐的色盲友好配色:
# 3 色
['#1f77b4', '#ff7f0e', '#2ca02c']
# 4 色
['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
# 5 色
['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']| 场景 | 推荐配色 |
|---|---|
| 正式论文 | academic, grayscale |
| 演示汇报 | vibrant, nature |
| 黑白打印 | grayscale |
| 多组数据 (>5) | pastel, cool |
| 对比强调 | vibrant, warm |
| 相关性热力图 | diverging |
| 操作系统 | 首选字体 | 备选字体 |
|---|---|---|
| Windows | SimHei (黑体) | Microsoft YaHei |
| macOS | Heiti TC (黑体-繁) | PingFang TC |
| Linux | WenQuanYi Micro Hei | Noto Sans CJK SC |
| 元素 | 建议字号 | 说明 |
|---|---|---|
| 图表标题 | 12-14 pt | 加粗 |
| 坐标轴标签 | 10-12 pt | |
| 刻度标签 | 9-10 pt | |
| 图例 | 9-10 pt | |
| 注释文字 | 8-9 pt |
import matplotlib.pyplot as plt
# 中文字体配置
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
# 字体大小配置
plt.rcParams['font.size'] = 11
plt.rcParams['axes.titlesize'] = 12
plt.rcParams['axes.labelsize'] = 11
plt.rcParams['xtick.labelsize'] = 9
plt.rcParams['ytick.labelsize'] = 9
plt.rcParams['legend.fontsize'] = 9| 使用场景 | 宽度 (英寸) | 高度 (英寸) | 对应像素 (300dpi) |
|---|---|---|---|
| 单栏图 | 3.5 | 2.5-3.0 | 1050×750 |
| 1.5栏图 | 5.0 | 3.5-4.0 | 1500×1050 |
| 双栏图 | 7.0 | 4.5-5.5 | 2100×1350 |
| 全页图 | 7.0 | 9.0 | 2100×2700 |
# 单栏图
fig, ax = plt.subplots(figsize=(3.5, 2.5))
# 双栏图
fig, ax = plt.subplots(figsize=(7.0, 5.0))
# 自定义尺寸
fig, ax = plt.subplots(figsize=(width_inches, height_inches))推荐宽高比 1.618:1(黄金比例)或 4:3、16:9。
# 黄金比例
width = 7.0
height = width / 1.618
fig, ax = plt.subplots(figsize=(width, height))# 线宽
linewidth = 1.5 # 标准
linewidth = 2.0 # 强调
linewidth = 1.0 # 辅助线
# 线型
linestyle = '-' # 实线
linestyle = '--' # 虚线
linestyle = '-.' # 点划线
linestyle = ':' # 点线| 标记 | 代码 | 适用场景 |
|---|---|---|
| 圆点 | 'o' | 一般数据点 |
| 方块 | 's' | 分类数据 |
| 三角形 | '^' | 峰值数据 |
| 菱形 | 'D' | 关键数据 |
| 星号 | '*' | 特殊标记 |
| 十字 | '+' | 误差数据 |
# 标记大小
markersize = 6 # 标准
markersize = 8 # 强调
# 标记样式
ax.plot(x, y, marker='o', markersize=6, markerfacecolor='white',
markeredgecolor='#2E5AAC', markeredgewidth=1.5)避免标记过于密集:
# 每 n 个点显示一个标记
markevery = 10 # 每 10 个点显示一个
ax.plot(x, y, marker='o', markevery=markevery)| 格式 | 适用场景 | 优点 |
|---|---|---|
| LaTeX 论文 | 矢量图,无限缩放 | |
| EPS | LaTeX 论文 | 矢量图,兼容性好 |
| PNG | Word/PPT | 位图,透明背景 |
| SVG | 网页编辑 | 矢量图,可编辑 |
| TIFF | 期刊投稿 | 高质量位图 |
# PDF 导出(推荐用于 LaTeX)
plt.savefig('figure.pdf', bbox_inches='tight', dpi=300)
# PNG 导出(推荐用于 Word)
plt.savefig('figure.png', bbox_inches='tight', dpi=300,
facecolor='white', edgecolor='none')
# SVG 导出(可编辑)
plt.savefig('figure.svg', bbox_inches='tight')
# TIFF 导出(期刊投稿)
plt.savefig('figure.tiff', bbox_inches='tight', dpi=600)| 参数 | 说明 | 建议值 |
|---|---|---|
bbox_inches |
去除多余白边 | 'tight' |
dpi |
分辨率 | 300(标准)、600(高质量) |
pad_inches |
边距 | 0.02 |
facecolor |
背景色 | 'white' |
transparent |
透明背景 | False |
# 导出多种格式
formats = ['pdf', 'png', 'svg']
for fmt in formats:
plt.savefig(f'figure.{fmt}', bbox_inches='tight', dpi=300)提交图表前检查:
- 字体清晰可读,中文正常显示
- 坐标轴标签完整(含单位)
- 图例位置合理,不遮挡数据
- 配色协调,符合论文风格
- 分辨率足够(≥300dpi)
- 无多余白边
- 线条粗细适中
- 标记清晰可辨
- 标题简洁明了
- 网格线不干扰数据阅读