使用 matplotlib 创建详细的 svg 图

Create a detailed svg graph with matplotlib

我使用 Python 库 matplotlib 来绘制包含大量数据的图表。执行 plt.show() 后,我可以放大并查看图表的详细信息。但是,我想将图表保存到带有 plt.savefig 的 svg 文件中,并查看这些默认情况下在默认非放大视图中不可见的详细信息。我该怎么做?

请注意,在处理矢量图形格式(例如 svg 文件)时,增加 DPI 或逐英寸增加尺寸是没有意义的。

例如,考虑以下程序。

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
plt.plot(y)
plt.savefig('test.svg')

我们会得到如下图,即使放大也看不到正弦波周期的细节。

但是用plt.show显示图像然后放大,我们可以看到正弦波的细节。

添加图形尺寸:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
fig = plt.figure(figsize=(19.20,10.80))

plt.plot(y)
plt.savefig('test.svg')

你会得到你想要的分辨率。


正如 JohanC 正确观察到的那样,另一个好的解决方案是减少线条的宽度:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
#fig = plt.figure(figsize=(19.20,10.80))

plt.plot(y, linewidth=0.1)
plt.savefig('test.svg')