グリッド間隔、線の種類、線の幅、線の色、用紙サイズは自由に設定できるようにした。
要点は次の3つ
plt.subplots_adjust()
で枠線の外側をなくしてfigureを紙面全体にするplt.gca().axis("off")
で枠線、目盛り、目盛りラベルを消すplt.plot(transform=plt.gcf().transFigure)
でfigureに対して相対位置で線を引く
コード全体
import matplotlib.pyplot as plt grid = 5 # グリッド間隔 [mm] linestyle = "-" linewidth = 0.1 color = "cyan" inch2mm = 25.4 w_inch = 210/inch2mm #横の長さ [mm] h_inch = 297/inch2mm #縦の長さ [mm] grid_inch = grid/inch2mm plt.figure(figsize=(w_inch, h_inch)) plt.subplots_adjust(top=1, bottom=0, left=0, right=1) #枠線の外側をなくす plt.gca().axis("off") #枠線、目盛り、目盛りラベルを消す #縦線 ncol = int(w_inch/grid_inch)+1 grid_col = grid_inch/w_inch for col in range(ncol): plt.plot([col*grid_col,col*grid_col],[0,1], color=color,linewidth=linewidth,linestyle=linestyle, transform=plt.gcf().transFigure) #横線 nrow = int(h_inch/grid_inch)+1 grid_row = grid_inch/h_inch for row in range(nrow): plt.plot([0,1],[row*grid_row,row*grid_row], color=color,linewidth=linewidth,linestyle=linestyle, transform=plt.gcf().transFigure) plt.savefig("grid.pdf") plt.show()
実際のサイズで印刷すると、印刷精度でほぼ正確に方眼紙が作れるはずである。