matplotlib中的矩形修补程序之间不需要的空间

以下代码绘制两个红色矩形。 红色长方形应该彼此相邻,两者之间没有空格。在python情节中,这是可以的。在导出的pdf中,矩形之间有一个薄而明显的空白区域。有没有解决这个问题的方法?matplotlib中的矩形修补程序之间不需要的空间

import matplotlib.pyplot as plt 

import matplotlib

import matplotlib.patches as patches

fig1 = plt.figure();

ax = fig1.add_subplot(111, aspect='equal');

ax.set_xticks([]);

ax.set_yticks([]);

#add first patch

dx=1.0;

loc=(0.0,0.0);

ax.add_patch(patches.Rectangle((loc[0]-dx/2.0,loc[1]-dx/2.0),dx,dx,facecolor='red',edgecolor='none',linewidth=0));

#add second patch

dx=1.0;

loc=(1.0,0.0);

ax.add_patch(patches.Rectangle((loc[0]-dx/2.0,loc[1]-dx/2.0),dx,dx,facecolor='red',edgecolor='none',linewidth=0));

ax.set_xlim([-1,3]);

ax.set_ylim([-1,2]);

fig1.show();

plt.savefig('spaceTest.pdf');

全部是在Python情节OK:

但有PDF中的空白:

回答:

细线来自不精确的算术。你用整数算术计算矩形的点,但你应该强制浮点算术。

例如:与其

ax.add_patch(patches.Rectangle((float(loc[0]-dx/2),float(loc[1]-dx/2)),float(dx),float(dx),facecolor='red',edgecolor='none',linewidth=0)); 

使用

ax.add_patch(patches.Rectangle((loc[0]-dx/2.0,loc[1]-dx/2.0),float(dx),float(dx),facecolor='red',edgecolor='none',linewidth=0)); 

使用的2.0代替2给人0.5,而不是作为0分工的结果。

如果这没有帮助,你也应该把Antialiasing off:

ax.add_patch(patches.Rectangle((loc[0]-dx/2.0,loc[1]-dx/2.0),float(dx),float(dx),facecolor='red',edgecolor='none',linewidth=0, antialiased = False)); 

以上是 matplotlib中的矩形修补程序之间不需要的空间 的全部内容, 来源链接: utcz.com/qa/261134.html

回到顶部