使用fig.add_axes方法的另一种方法也相当精确。 我还包括了1厘米的网格。
import matplotlib.pyplot as plt
import matplotlib as mpl
figure_width = 28.7
figure_height = 20
left_right_magrin = 1
top_bottom_margin = 1
left = left_right_magrin / figure_width
bottom = top_bottom_margin / figure_height
width = 1 - left*2
height = 1 - bottom*2
cm2inch = 1/2.54
fig = plt.figure(figsize=(figure_width*cm2inch,figure_height*cm2inch))
ax = fig.add_axes((left, bottom, width, height))
plt.xlim(0, figure_width * width)
plt.ylim(0, figure_height * height)
ax.xaxis.set_major_locator(mpl.ticker.MultipleLocator(5))
ax.xaxis.set_minor_locator(mpl.ticker.MultipleLocator(1))
ax.yaxis.set_major_locator(mpl.ticker.MultipleLocator(5))
ax.yaxis.set_minor_locator(mpl.ticker.MultipleLocator(1))
ax.grid(color="gray", which="both", linestyle=':', linewidth=0.5)
ax.plot([1,2,3,5,6,7,8,9,10,12,13,14,15,17])
plt.show()
fig.savefig('A4_grid_cm.png', dpi=1000)
fig.savefig('tA4_grid_cm.pdf')
结果:
(注:该图片无法翻译,请自行查看原图)
set_size
应该在保存图形之前执行,以便考虑标签和刻度中的所有更改。但是我注意到两个问题:(1)如果图形的大小太小,则标签会被裁剪,(2)当我打印 PDF 时,大小与实际比例不符。为什么会这样?请注意,我使用\includegraphics
将 PDF 作为图形调用到 latex 文档中,然后打印生成的 PDF。 - Gabrieladd_axes
为色条添加一个轴,并使用subplots_adjust
为其留出一些空间。 - ImportanceOfBeingErnest