0
0

matplotlibについてのメモ

Last updated at Posted at 2024-08-19

複数の画像形式で保存する

画像形式をリストにして、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='blue', linewidth=2)

# 軸ラベルとタイトル、グリッドの設定
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('Sine Wave')
plt.legend()
plt.grid(True)

# 保存するファイル形式のリスト
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()

foo.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0