2017-12-18 6 views
1

以下のコードを実行すると、軸目盛マーカーはすべて重なり合っています。このとき、ズーミングがplt.show()でポップアップすると、各マーカーは良好な解像度を維持できます。ただし、plt.savefig('fig.png')で保存された数値は解決を失います。これも最適化できますか?私はあなたが、例えば、図形の大きさを設定することにより、それを解決することができると思いplt.savefigを使用して十分なティックマーカーを正しく表示するにはどうすればよいですか?

enter image description here

from matplotlib.ticker import FuncFormatter 
from matplotlib.pyplot import show 
import matplotlib.pyplot as plt 
import numpy as np 

a=np.random.random((1000,1000)) 

# create scaled formatters/for Y with Atom prefix 
formatterY = FuncFormatter(lambda y, pos: 'Atom {0:g}'.format(y)) 
formatterX = FuncFormatter(lambda x, pos: '{0:g}'.format(x)) 

# apply formatters 
fig, ax = plt.subplots() 
ax.yaxis.set_major_formatter(formatterY) 
ax.xaxis.set_major_formatter(formatterX) 

plt.imshow(a, cmap='Reds', interpolation='nearest') 

# create labels 
plt.xlabel('nanometer') 
plt.ylabel('measure') 
plt.xticks(list(range(0, 1001,10))) 
plt.yticks(list(range(0, 1001,10))) 

plt.savefig('fig.png',bbox_inches='tight') 
plt.show() 
+1

figのサイズを設定するのに役立ちますか? – Cleb

+0

ズームした画像を保存する方法は? – ImportanceOfBeingErnest

答えて

2

コメントで@PatrickArtnerで指摘したように
fig, ax = plt.subplots() 
fig.set_size_inches(15., 15.) 

、あなたはその後も

plt.xticks(list(range(0, 1001, 10)), rotation=90) 

代わりの

plt.xticks(list(range(0, 1001,10))) 

残りのコードでは、X-ティックの重複を避けることができます完全に変更されていません。出力は合理的です(しかし、ここでアップロードするには大きすぎます)。

+1

は、x軸の上書きを軽減するために 'plt.xticks(list(range(0、1001,10))、rotation = 90)'というラベルは多くの助けになります。 - その少しのために答えていない:)おそらくあなたにそれを追加する? –

+0

@PatrickArtner:ありがとう、私はそれを追加しました。 – Cleb

関連する問題