Matplotlib で高解像度でグラフをプロットして保存する方法

Suraj Joshi 2023年1月30日
  1. Matplotlib で高解像度でグラフをプロット
  2. Matplotlib で図を高解像度で保存
Matplotlib で高解像度でグラフをプロットして保存する方法

Matplotlib でグラフを高解像度で保存するには、savefig() 関数のさまざまなパラメーターを制御します。同様に、figure() 関数で高い値の dpi パラメータを設定することにより、グラフを高解像度でプロットできます。

Matplotlib で高解像度でグラフをプロット

matplotlib.pyplot.figure() 関数で dpi の値を高く設定することで、図を高解像度でプロットできます。

matplotlib.pyplot.figure() の構文:

matplotlib.pyplot.figure(num=None, 
                         figsize=None, 
                         dpi=None, 
                         facecolor=None, 
                         edgecolor=None, 
                         frameon=True, 
                         FigureClass=<class 'matplotlib.figure.Figure'>,
                         **kwargs)

dpi は 1 インチあたりのドット数を表します。これは、図の 1 インチあたりのピクセル数を表します。matplotlib.pyplot.figure() 関数の dpi のデフォルト値は 100 です。より高い値の dpi を設定して、高解像度のプロットを生成できます。ただし、dpi を増やすと図も拡大されるため、図が切り取られないように、dpi の適切な値を調整する必要があります。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 20)
m = 1.5
c = 2
y = m * x + c

plt.figure(dpi=150)
plt.plot(x, y)
plt.title("y=mx+c")
plt.xlabel("x-axis")
plt.ylabel("y-axis")

plt.show()

出力:

高解像度でのプロット

Matplotlib で図を高解像度で保存

matplotlib.pyplot.savefig() 関数で dpi の値を高く設定することで、高解像度で図をプロットできます。

matplotlib.pyplot.savefig() の構文:

matplotlib.pyplot.savefig(fname, 
                          dpi=None,
                          facecolor='w',
                          edgecolor='w',
                          orientation='portrait',
                          papertype=None, 
                          format=None,
                          transparent=False,
                          bbox_inches=None, 
                          pad_inches=0.1,
                          frameon=None, 
                          metadata=None)

保存された Figure の解像度は、savefig() 関数の dpi パラメーターで制御できます。同様に、プロットの保存中にフォーマットを変更することもできます。一般に、png は可逆圧縮形式であり、他は非可逆圧縮形式であるため、高解像度のプロットでは pngjpg よりも優れています。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5)
m = 1.5
c = 2
y = m * x + c

plt.plot(x, y)
plt.title("y=mx+c")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.savefig("High resoltion.png", dpi=300)

これにより、デフォルトの場合よりも高い解像度で現在の作業ディレクトリにプロットが High resoltion.png として保存されます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn