使用 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')
我使用 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')