複数の画像形式で保存する
画像形式をリストにして、for文で回します。MS WordにはSVGで、LaTeXにはPDFで貼りましょう。
# 保存するファイル形式のリスト
formats = ['eps', 'svg', 'pdf', 'png']
# 各ファイル形式で保存
[plt.savefig(f'sine_wave.{fmt}') for fmt in formats]
例:
import numpy as np
import matplotlib.pyplot as plt
# データの作成
x = np.linspace(0, 2 * np.pi, 1000) # 0から2πまでの範囲で1000点
y = np.sin(x)
# Sine波のプロット
plt.plot(x, y, label='sin(x)', color='black', linewidth=2)
# 軸ラベル、タイトル、凡例、グリッドの設定
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('Sine Wave')
plt.legend()
plt.grid(True, linestyle='--')
# レイアウトを調整
plt.tight_layout()
# 保存するファイル形式のリスト
formats = ['eps', 'svg', 'pdf', 'png']
# 各ファイル形式で保存
[plt.savefig(f'sine_wave.{fmt}') for fmt in formats]
# 描画をクリア
plt.clf()
SVG でテキストをベクター画像に変換しない
以下のようにパラメータを設定することで変換できます。
plt.rcParams['svg.fonttype'] = 'none'
具体例:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['svg.fonttype'] = 'none' # テキスト情報を保持する設定
# データの作成
x = np.linspace(0, 2 * np.pi, 1000) # 0から2πまでの範囲で1000点
y = np.sin(x)
# Sine波のプロット
plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)
# 軸ラベルとタイトル、グリッドの設定
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('Sine Wave.')
plt.legend()
plt.grid(True)
# SVG形式で保存
plt.savefig('sine_wave.svg')
比較
ベクター画像:
テキスト:
カスタムのx軸ラベル
# カスタムのx軸ラベルを設定
plt.xticks(x)
例:
import matplotlib.pyplot as plt
x = [1, 2, 4]
y = [1.2, 1.4, 1.3]
# プロット
plt.plot(x, y, '.-', label='foo')
# カスタムのx軸ラベルを設定
plt.xticks(x)
# 軸ラベルとタイトル、グリッドの設定
plt.xlabel('x')
plt.ylabel('y')
plt.title('foo graph')
plt.legend()
plt.grid(True)
plt.show()