# 科研图表绘制
# 前置知识
# 位图
又称为点阵图像、像素图或栅格图像,由像素点组成。这些点可以进行不同的排列和染色以构成图像。
位图特点:
- 位图图像善于重现颜色的细微层次,能够制作出色彩和亮度变化丰富的图像,颜色逼真,文件庞大,不能随意缩放;
- 图像尺寸越大,文件也就越大;图像色彩越丰富,文件也就越大。
- 打印和输出的精度是有限的;
- 位图的文件格式:比如.tiff、.bmp、.gif、.jpg、.png、.psd 等。
- 常用的位图编辑软件:Photoshop 等。
# 矢量图
矢量又称为“向量”,矢量图像中的图形元素(点和线段)称为对象,每个对象都是一个单独的个体,它具有大小、方向、轮廓、颜色和屏幕位置等属性。简单地说,矢量图形软件就是用数学的方法来绘制矩形等基本形状的。
矢量图特点:
- 可以无限放大,同时又不用担心失真;
- 矢量图可以轻松地转化为位图,而位图转化为矢量图就需要通过图像临摹之类的方式,但完美转成矢量图还是有些难度。
- 矢量图的文件格式 :比如 Adobe Illustrator 的.AI、.EPS、.SVG,.PDF,AutoCAD 的.dwg 和.dxf,windows 标准图元文件*.wmf 和增强型图元文件*.emf 等。
- 常用的矢量图编辑软件:Illustrator、CorelDraw、AutoCAD 等。
# 像素、DPI 与打印尺寸之间的关系
图像分辨率,像素数和打印尺寸在数学上的关系为:像素=分辨率(DPI)× 打印尺寸(以英寸为单位)。
其中,DPI 为每平方英寸像素数目,也就是图像细节程度的度量。理解了上述概念我们就可以通过上述概念推测出图像的尺寸大小,比如说,我想打印一副 8 英寸 * 10 英寸,300DPI 的图片,那么怎样设置图像的像素长宽度呢?你只要简单地把这两者相乘就可以了,$8 \times 300=2400$ ,$10 \times 300=3000$ ,所以这幅图像的像素尺寸就是 $2400 \times 3000$ 。
# 杂志要求
这里以著名出版商艾斯维尔(Elsevier)的要求 为例:
TARGET SIZE | Image Width | Pixels at 300 dpi | Pixels at 500 dpi | Pixels at 1000 dpi |
---|---|---|---|---|
Minimal size | 30 mm (85 pt) | 354 | 591 | 1181 |
Single column | 90 mm (255 pt) | 1063 | 1772 | 3543 |
1.5 column | 140 mm (397 pt) | 1654 | 2756 | 5512 |
Double column (full width) | 190 mm (539 pt) | 2244 | 3740 | 7480 |
通过学习上面图像尺寸的内容我们可以知道打印尺寸与像素和 dpi 之间的关系。例如,表格中红色要求图像最小尺寸为 $30 \mathrm{mm}$ ,我们可以通过公式验证一下在 300dpi 分辨率下 354 像素宽打印出来的尺寸是不是 $30 \mathrm{mm}$ :$354 \div 300 \times 2.54 \times 10 = 29.97 \mathrm{mm}$ , 最后相乘的两个数据是把英寸换算成毫米,正好是 $30 \mathrm{mm}$ 。所以知道了上述关系我们就可以利用 Photoshop 来编辑我们的图片了;
例如一张图片,来自于 Mapman,用 Photoshop 打开,显示尺寸如下:
由于图片尺寸太大,宽度 $124.99 \mathrm{cm}$ ,而且分辨率是 $72$ ,不符合杂志要求。这里利用上面学到的知识在不损失图片像素的情况下调整一下图片尺寸;
现在我们要把图片宽度调整到双栏的尺寸也就是 $19\mathrm{cm}$ ;通过公式:像素=分辨率(DPI)× 打印尺寸(以英寸为单位)
在像素不变的情况下,我们要提高分辨率,来缩小图片的打印尺寸,根据比例计算应该提高到多少 dpi: $124.99 \div 19 \times 72=473.6 \mathrm{dpi}$ ;
所以修改宽度和分辨率这两个数值就可以了,而且图片的像素数是不变的,达到了无损改变图片的大小;而且 473dpi 大于最小的 300dpi。
# Matplotlib Python 库
作为 Python 生态中最基础且最广泛使用的数据可视化库,Matplotlib 提供了丰富的 2D 和 3D 图形绘制能力,尤其适合制作线图、柱状图、散点图等常见科研图表,并能高度定制化输出样式以符合各类学术期刊的标准。
它可以用来绘制各种静态,动态,交互式的图表。我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来,包括绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
- Matplitlib Cheat Sheet
# Seaborn Python 库
构建于 Matplotlib 之上,Seaborn 进一步强化了统计图表的功能,它内置了许多高级统计图表样式,如热力图、箱型图和时间序列分析图表,使复杂数据关系的展现更为直观易读。既然是基于 matplotlib,所以 seaborn 的很多图表接口和参数设置与其很是接近,使得作图更加方便快捷。即便是没有什么基础的人,也能通过极简的代码,做出具有分析价值而又十分美观的图形。
- Seaborn Cheat Sheet
# Visio 矢量图软件(框架流程绘制与算法结构)
对于非数据密集型但逻辑严密的图表设计,如实验流程图、系统架构图或算法流程图,Microsoft Visio 凭借其强大的矢量编辑能力和海量预设模板,成为了构建清晰、规范流程图的理想选择。
# Origin 矢量图软件(数学分析与函数绘制)
Origin 是由 OriginLab 公司开发的一个科学绘图、数据分析软件,支持在 Microsoft Windows 下运行。Origin 支持各种各样的 2D/3D 图形。Origin 中的数据分析功能包括统计,信号处理,曲线拟合以及峰值分析。Origin 中的曲线拟合是采用基于 Levernberg-Marquardt 算法(LMA)的非线性最小二乘法拟合。Origin 强大的数据导入功能,支持多种格式的数据,包括 ASCII、Excel、NI TDM、DIADem、NetCDF、SPC 等等。图形输出格式多样,例如 JPEG,GIF,EPS,TIFF 等。内置的查询工具可通过 ADO 访问数据库数据。
在物理、化学、生物等领域享有盛誉,Origin 专为科研数据分析打造,以其强大的数学分析和函数绘制能力著称,特别适用于绘制精密的信号曲线、频谱分析图和其他复杂科研图形。
# AI(Adobe Illustrator)矢量图软件
作为行业标准级矢量图形处理软件,Illustrator 不仅适用于高精度的出版级图表设计,还能创建高质量的科学插图,确保在任何尺寸下都能保持清晰细腻的效果。它是一种应用于出版、多媒体和在线图像的工业标准矢量插画的软件。该软件主要应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等,也可以为线稿提供较高的精度和控制,适合生产任何小型设计到大型的复杂项目。
在图表绘制中,主要应用在:直接绘图-计科和控制类的用的很少,有生化环材方向的同学利用 AI 实现细胞结构,心室高亮等操作;整合之前导出的单个矢量图;将非矢量图转化为矢量图
# Inkscape 矢量图软件
AI 的平替版,优点在于开源免费。 作为开源界的矢量图形编辑器翘楚,Inkscape 提供了一套完整的 SVG 编辑工具,科研人员可以免费使用它来创作复杂的矢量图表,并确保跨平台兼容性和无损缩放性。官方中文地址:Inkscape