2017-12-18 18 views
2

次のコードは2つの赤い四角形を描画します。 赤い四角形は、間にスペースを入れずに、隣り合っている必要があります。 Pythonプロットでは、これはOKです。輸出されたpdfでは、矩形の間に薄いが目立つ空白があります。これを修正する方法はありますか? enter image description herematplotlibの四角形パッチ間の不要なスペース

しかし、ホワイトスペースをPDFにあります:

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ですenter image description here

+0

回避策の一つは、(すなわち、同じ色に設定) 'edgecolor'を使用するのが良いかもしれませんか? – DilithiumMatrix

答えて

2

細い線が不正確な算術から来ています。整数演算で矩形の点を計算しますが、浮動小数点演算を強制する必要があります。例えば

2.0代わりに2を使用する代わりに

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)); 

は、分割結果として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)); 
+0

これを修正しても、細い線が表示されます(質問を編集しました)。私がもともとこれに気づいたとき、それらの数字はすべて合理性(分数。分数)でした。 – Wouter

+0

もう1つの問題はアンチエイリアスです。私は私のポストを延長しました。 – clemens

関連する問題