Matplotlibで作成したPDFにフォントを埋め込む方法
Matplotlibで生成したPDFにフォントを正しく埋め込むには、plt.rcParams['pdf.fonttype'] = 42 を設定します。この設定により、PDF内でTrueTypeフォントが使用され、テキストが編集可能な形で埋め込まれます。
手順
- 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。
- figure() メソッドを使用して、新しい図を作成するか、既存の図を有効化します。
- numpy を使って x と y のデータポイントを生成します。
- scatter() メソッドで x と y のデータポイントをプロットします。
- プロットにタイトルを設定します。
- 図をPDF形式で保存します。
コード例
import numpy as np
from matplotlib import pyplot as plt, font_manager as fm
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
plt.rcParams['pdf.fonttype'] = 42
fig, ax = plt.subplots()
x = np.random.rand(100)
y = np.random.rand(100)
ax.scatter(x, y, c=y, marker="v")
fprop = fm.FontProperties(fname='C:\\Windows\\Fonts\\MISTRAL.TTF')
ax.set_title('Scatter Plot With Random Points',
fontproperties=fprop, size=20, fontweight="bold")
plt.savefig("demo.pdf")
出力結果
コードを実行すると、プロジェクトディレクトリに「demo.pdf」というファイル名で以下の散布図が保存されます。

タイトル部分のフォントスタイルに注目してください。この例では、Mistral フォントを使ってタイトルを表示しています。
補足:fonttype の違いについて
pdf.fonttype の値には主に次の2種類があります。
- 42(TrueType):フォントが完全に埋め込まれ、PDFビューアや編集ソフトでテキストを選択・コピーできます。出版や論文投稿ではこちらが推奨されることが多いです。
- 3(Type 3):グリフがアウトライン化されて埋め込まれるため、ファイルサイズは小さくなりますが、テキストとしての編集性は失われます。
特に学術論文の投稿規定では「Type 42(TrueType)でフォントを埋め込むこと」が求められる場合が多いため、用途に応じて適切な値を設定しましょう。
-
Matplotlibで3D連続線をプロットする方法
Matplotlibを使って3次元空間に連続的な線(3Dライン)を描画する方法を解説します。基本的な手順は以下の通りです。3Dプロットの手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用して x と y のデータポイントを作成します。xとyのデータポイントから z のデータポイントを計算して作成します。figure() メソッドを使って、新しい図を作成するか既存の図をアクティブにします。add_subplot() メソッドに3D投影(projection=3d)を指定して、Axesを追加します。plot() メソッドを使って、x、y、zのデータポ
-
FlaskでMatplotlibのグラフを表示する方法【サンプルコード付き】
Webアプリケーション上でグラフを動的に表示したい場合、FlaskとMatplotlibを組み合わせるのが効果的です。この記事では、Flaskアプリケーション内でMatplotlibのプロットをPNG画像としてブラウザに返す方法を、具体的な手順とサンプルコードとともにわかりやすく解説します。 実装の流れ FlaskでMatplotlibのグラフを表示するまでの基本的な手順は以下の通りです。 小さなFlaskアプリケーションを作成する カレントディレクトリに移動し、環境変数を設定してアプリを起動する$ export FLASK_APP=file.py$ flask run ブラウザで http