普段はmatplotlibで作ったグラフに美しさを求めるようなことは無いのですが、
とある業務で、解像度の高い状態で出力する必要が発生したので、そのメモです。
普段は画像ファイルが必要な場合もplt.show()
でjupyter notebook上に表示した物を保存していましたが、
綺麗に出力するために、画像ファイルに直接書き出しました。
使うのはplt.savefig()
です。
ドキュメント: matplotlib.pyplot.savefig
そして、保存するときの引数、dpiに大きめの値を与えることで、高解像度に保存することができます。
デフォルトと、dpiを指定した場合の2通りやってみましょう。
import matplotlib.pyplot as plt
import numpy as np
# ダミーデータ生成
x = np.random.randn(50)
y = np.random.randn(50)
fig = plt.figure(facecolor="w")
ax = fig.add_subplot(111)
ax.scatter(x, y)
ax.set_xlabel("x軸")
ax.set_ylabel("y軸")
ax.set_title("タイトル")
# 解像度の指定をせずに保存
plt.savefig("default_dpi_scatter.png", format="png")
# もう一度同じグラフを作る
fig = plt.figure(facecolor="w")
ax = fig.add_subplot(111)
ax.scatter(x, y)
ax.set_xlabel("x軸")
ax.set_ylabel("y軸")
ax.set_title("タイトル")
# 解像度を指定して保存
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
デフォルトの方は明らかにピンボケしていて、dpiに300を指定した方はくっきりしています。
文字を見れば明らかです。
ちなみに、dpiを指定しなかった場合は、
rcParams[“savefig.dpi”] の値が使われます。そしてこれに”figure”が指定されているときは、
plt.rcParams[“figure.dpi”] の値が使用されます。
(matplotlibの設定フィアルでデフォルト値を変えることはできますが、僕の環境では特に変更していません。)
一応初期値を確認しておきましょう。
print(plt.rcParams["savefig.dpi"])
# figure
print(plt.rcParams["figure.dpi"])
# 72.0
何も指定しないと dpi=72 になるようですね。