Matplotlib svg输出表现出奇怪的行为

时间:2017-03-01 21:35:28

标签: python svg matplotlib

我正在制作一段时间内风力分布的极地情节,我将其保存为svg格式,将其包含在我正在制作inkscape的图中。

以下是我的数据示例:

import matplotlib.pyplot as plt
import numpy as np

Theta =  np.asanyarray([11.25,  33.75,  56.25,  78.75, 101.25, 123.75, 146.25, 168.75,
              191.25, 213.75, 236.25, 258.75, 281.25, 303.75, 326.25])

R = np.asanyarray([5.4,2.4,1.2,2.6,5.4,2.3,5.8,5.4,3.3,1.8,1.0,4.0,13.1,7.6,3.2])

fig, axes = plt.subplots(nrows = 1, ncols = 1,subplot_kw={'projection': 'polar'},figsize = (2,2))

axes.set_theta_direction(-1)
axes.set_theta_offset(0)
axes.set_theta_zero_location('N')
axes.set_thetagrids([0,90,180,270],['N','E','S','W'])
axes.bar((Theta)*np.pi/180,R,width=2*np.pi/Theta.shape[0],edgecolor='black')
plt.savefig('Plot1.svg')

当我像这样运行时,一切正常。但是,我的数据集中的theta表示bin中心,而它被绘制为bin边缘,所以我想减去bin宽度的一半,以便它与正确的风向对齐

fig, axes = plt.subplots(nrows = 1, ncols = 1,subplot_kw={'projection': 'polar'},figsize = (2,2))
axes.set_theta_direction(-1)
axes.set_theta_offset(0)
axes.set_theta_zero_location('N')
axes.set_thetagrids([0,90,180,270],['N','E','S','W'])
axes.bar((Theta-11.25)*np.pi/180,R,width=2*np.pi/Theta.shape[0],edgecolor='black')
plt.savefig('Plot2.svg')

两个图之间的唯一区别是从Plot2中减去一个常量。但是,当我将它们导入到inkscape中时,它们的大小非常不同。

enter image description here

根据我的指定,情节1是(2英寸x 2英寸),但出于某种原因,情节2是(38.357英寸x 2英寸)?此外,对于Plot 1,生成的文件大小为147 kb,而Plot 2的大小为145 kb。但是,如果我将它们保存为.png文件,它们都会保持正确的尺寸并且文件大小相同。

我可以将它剪辑在inkscape中并解决问题,但我只想知道它为什么会发生这样我以后可以防止它?

0 个答案:

没有答案