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