科研绘图:如何导出高DPI的图片

type
status
date
slug
summary
tags
category
icon
password
网址
作者
标签
文章链接
发布时间
来源

Python绘图

学术期刊通常对稿件的配图提出较高的 DPI 要求(大多在300-600之间),因为高 DPI 意味着配图将具有清晰的显示效果。要求: tif 和 jpg 格式的图片在期刊的纸面尺寸上有 300 - 600 的 DPI,tif 图采用 LZW 压缩,jpg 图选择最高的 quality。1/4 版面大小的图片尺寸是 95 x 115 mm。
如果你用Python绘图,那么可以参考下面代码:
plt.figure 函数的 figsize 参数要求单位为英寸,所以要先把版面尺寸的单位从毫米换算到英寸。fig.savefig 方法里可以直接指定 DPI,压缩方法这种与图片格式相关的参数需要传给 PIL 来实现。最后能得到两张分辨率为 2244 x 2716,600 DPI 的图片。需要注意如果 dpi 参数的值太高,生成的图片的分辨率和体积太大。
在 Matplotlib 中,给定 figsizedpi 越大,绘制同一个元素时会用到更多像素,所以最后导出的图片会更清晰。
此外,对于习惯使用Latex写作的人而言,最简单的方式是直接以矢量图的格式导出(eps、pdf 等)

Stata绘图

实证论文的撰写往往离不开Stata,但是Stata的图片导出并不支持DPI的设定,需要借助其他工具来将矢量图形(svg)转换为清晰度高且无损的栅格图像(jpg/png/tif)。
由于Stata 16以上的版本可以与Python进行交互,我们的思路是将Python代码嵌入do文件中,在Stata直接调用Python的相关库(P.S. 如何在 Stata 中调用 Python

前置工作

  1. 打开Anaconda Prompt,安装python第三方库:pip install cairosvg
    1. 注意:CairoSVG模块至少需要 Python 3.6
  1. 在 Windows 上还必须安装  GTK (可以直接点击下方文件下载)来满足运行环境的需要,不然会报错
  1. 一般不需要额外安装Visual C++,因为现在Windows默认自带
    1. 如果你使用的是其他系统例如Linux,那么请点击此处查看
注:cairosvg可以将svg转为四种形式:pdf(svg2pdf)、ps(svg2ps)、png(svg2png)以及svg(svg2svg

代码运行

搭建好代码环境之后,我们在dofile中运行如下代码:

批量转换

将Stata导出的svg图片统一放在某个文件夹中,然后继续放入下面给出的python脚本。接下来,将Stata的工作路径设置为上述图片文件夹,并输入 python script all_svg2png.py 即可实现批量转换。P.S. 转换后所有的png图片将储存在png_format子文件夹中
上述py脚本默认输出600 DPI的png格式图片
Stata代码示例:

参考资料

  • Matplotlib系列:导出高DPI的图片 - [Link] -
  • Change the dpi of stata images - [Link] -
 
Prev
解读回归系数的经济意义
Next
与“光”有关的管理学效应
Loading...
Article List
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关