より良い記法をみつけ次第更新。こだわりポイントがある人はコメントで教えてください。
結論
折れ線プロット
PDFでplotをきれいに吐きたいならとりあえずこれ。
# setup import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages import numpy as np x = np.arange(0,10,0.5) y = np.sin(x) # plot template fig = plt.figure(figsize=(5,4),dpi=80) plt.plot(x,y,'-*',label='this is used for legend') plt.grid() plt.rcParams['font.family'] = 'Arial' plt.title('Title above') plt.ylabel('ylabel') plt.xlabel('Time [s]') plt.legend(loc='best', borderaxespad=0, fontsize=12) plt.show() # Save figure as PDF pp = PdfPages('pdf_test.pdf') pp.savefig(fig) pp.close()
写真とplotを重ねる
写真と重ねたplotはベクターにする意義が薄いがまぁ統一するならPDFか。
fig = plt.figure(figsize=(10,10),dpi=200) # Image Plot img = plt.imread(’Filename’) plt.imshow(img) plt.grid() # Scatter Plot plt.scatter(ConvertedX,ConvertedY,c=color_code) plt.colorbar() plt.xlabel('longitude') plt.ylabel('lattitude')
個々の機能について
Font変更
Times New Roman教の方はこちらから。 matplotlib のフォントはデフォルトで Bitstream Vera Sansですが,ArialやNew Romanなどがいい人は以下のように変更すればいいと思います。
自分用メモ: matplotlibを使ったグラフの調整 - Qiita
plt.rcParams['font.family'] = 'Arial' #plt.rcParams['font.family'] = 'Times New Roman'
figureのサイズなどをいじる
plt.figure()の中身をいじればfigureのレイアウトや解像度を指定可能。
fig = plt.figure(figsize=(5,4),dpi=80)
PDFにエクスポート
多用するなら関数化しても良いかも。なお,ただの画像ならplt.savefig('figure.png')
でOK。
from matplotlib.backends.backend_pdf import PdfPages def savefigPDF(fig,filename): pp = PdfPages(filename) pp.savefig(fig) pp.close()
subplot①
fig = plt.fgure(figsize=(10,10),dpi=200) ax=fig.add_plot(1,2,1) plt.plot() ...
subplot②
こちらの書き方の場合,plt.~~
で設定していた箇所が ax.set_~~
になる。図ごとに設定をいじれるが書き方が面倒と思ってしまう。
img = plt.imread("Map3forsave.png") fig, ax = plt.subplots(1, 2,figsize=(10,10),dpi=200) ax[0].imshow(img) ax[1].scatter(sigpos_img[:,0],sigpos_img[:,1],c=signal_freq) ax[0].set_xlabel() ax[0].set_ylabel() ax[0].set_title()
参考サイト
https://shimolab01.blogspot.com/2018/02/matplotlibpdf.htmlshimolab01.blogspot.com