如何使用plt.savefig正确显示足够的刻度标记?

问题描述 投票:1回答:1

运行下面的代码后,轴刻度标记全部相互重叠。此时,当plt.show()弹出变焦时,每个标记仍然可以具有良好的分辨率。然而,由plt.savefig('fig.png')保存的数字将失去其解决方案。这也可以优化吗?

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()
python matplotlib axis-labels
1个回答
2
投票

我认为你可以通过设置数字的大小来解决它,例如

fig, ax = plt.subplots()
fig.set_size_inches(15., 15.)

正如@PatrickArtner在评论中指出的那样,你也可以避免x-ticks的重叠

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

代替

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

其余代码完全没有变化;然后输出看起来合理(但是太大而无法在此处上传)。

© www.soinside.com 2019 - 2024. All rights reserved.