问题描述
当使用Matplotlib 进行科研画图的时候,通常与Latex的联用画出更清晰,好看的科研图。但是如果没有事先安装Latex到电脑中,那就会在程序运行中导致如下错误:
Runtimeerror: failed to process string with tex because latex could not be found
解决
Matplotlib 文档 Tex rendering With LaTex中提供了解决方案如下:
大概意思就是需要下载LaTex 到电脑中,而且需要有dvipng, Ghostscript 在环境变量的路径中。我在这里下载的是TeXLive,具体的安装步骤如下:
- 点击页面中的download,进入到Installing TeX Live over the Internet,里面有.exe文件,还有.zip文件都可以使用下载。这里使用了.exe文件。
- 下载完之后正常安装
点击Advanced 进入高级设置,同时可以更改安装路径。
点击 N. of collections: 41/41 后面的Customize, 选择需要安装的语言,按自己需求选择,通常选择chinese, US and UK english就行了。
3. 大概会需要一个小时进行安。等到安装完毕,进行env path设置。
4. 环境变量路径设置:
首先win+R 打开 Run对话框, 输入sysdm.cpl 打开系统设置
点击Advanced,找到environment variables并打开,双击进入Path
我的TeXLive安装在了D盘,创建如下两个路径。因为之前所提到的dvipng, Ghostscript 执行文件在texlive文件夹下的texmf-dist文件夹中,win32文件夹中存在的是matplotlib所需要调用的latex执行文件。
5. 至此,所有的都安装完毕。下面开始测试一下:
例子
运行如下demo_1:
import numpy as np
import matplotlib.pyplot as plt
import time
start_time = time.time()
# Example data
t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(4 * np.pi * t) + 2
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
plt.plot(t, s)
plt.xlabel(r'\textbf{time} (s)')
plt.ylabel(r'\textit{voltage} (mV)',fontsize=16)
plt.title(r"\TeX\ is Number "
r"$\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!",
fontsize=16, color='gray')
# Make room for the ridiculously large title.
plt.subplots_adjust(top=0.8)
plt.savefig('tex_demo.svg')
end_time = time.time()
used_time = end_time - start_time
print(used_time)
plt.show()
可得到如图所示:
demo_2
import matplotlib.pyplot as plt
import numpy as np
x = list(np.arange(0, 1, 0.01))
y = list(np.arange(0, 1, 0.01))
plt.style.use(['science', 'ieee'])
plt.xlabel('Maximum Iteration')
plt.ylabel('Fibre Volume Fraction')
plt.plot(x, y)
# 折线图的dpi一般设置为600, 而图像的dpi设置为300.
plt.savefig('test1.svg', dpi=600)
plt.show()
代码可以运行: