Python で作成したグラフの部分だけを pdf として保存する:アップデート版

以前,「Python で作成したグラフの部分だけを pdf として保存する」のアップデート版。最近の弘大 JupyterHub の環境では,(matplotlib のバージョンアップにより)特にエラーが出ることもなく,簡単に pdf として保存できる。また,保存するファイル名の拡張子を .pdf から他の,たとえば .svg に変更すればそのまま svg として保存できる。

Matplotlib の場合 .savefig()

In [1]:
# NumPy も使います
import numpy as np
# Matplotlib でグラフを描きます
import matplotlib.pyplot as plt

# 以下はグラフを SVG で Notebook にインライン表示させる設定
%config InlineBackend.figure_formats = ['svg']

plt.savefig()

plt.savefig() で pdf として保存する例。

In [2]:
x = np.linspace(-2*np.pi, 2*np.pi, 100)

plt.plot(x, np.sin(x))
plt.savefig('psavepdf01.pdf');

fig.savefig()

plt.*** を使わず,ax.*** だけでグラフを作成したい!と思うなら,グラフを保存する際にも plt.*** は使わずにやりたいと思うはず。そんな方のために,fig.savefig() で pdf として保存する例。

念のため,ax.savefig() ではエラーになります。

In [3]:
# fig や ax を使う際の最初のおまじない
fig, ax = plt.subplots()

x = np.linspace(-2*np.pi, 2*np.pi, 100)

ax.plot(x, np.cos(x), c = 'tab:orange');
fig.savefig('psavepdf02.pdf');

SymPy の場合 .save()

私自身は,最近は SymPy そのもののグラフ作成機能を使うことはなく,言わばその機能拡張版に相当する SymPy Plotting Backends を使っているが…

In [4]:
# SymPy を使うときのおまじない
from sympy.abc import *
from sympy import *

# 以下はグラフを SVG で Notebook にインライン表示させる設定
%config InlineBackend.figure_formats = ['svg']

.save() で pdf として保存する例。

In [5]:
p1 = plot(sin(t), (t, -2*pi, 2*pi))
p1.save('./psavepdf03.pdf');

plot() 関数に直接 .save() をつけてもよい。

In [6]:
plot(cos(t), (t, -2*pi, 2*pi)).save('./psavepdf04.pdf');

SymPy Plotting Backends の場合 .save()

In [7]:
from sympy.abc import *
from sympy import *
# SymPy Plotting Backends (SPB)
from spb import *

# グラフを SVG で Notebook にインライン表示
%config InlineBackend.figure_formats = ['svg']

The Graphic Module 編

graphics() に直接 .save() をつける例。

In [8]:
graphics(line(sin(t), (t, -2*pi, 2*pi))).save('psavepdf05.pdf');

少し込み入ったグラフの際は,いったん p1 などとしてから保存してもよい。

In [9]:
p1 = graphics(
        line(cos(t), (t, -2*pi, 2*pi), 
             rendering_kw={'color':'tab:orange'}))

p1.save('psavepdf06.pdf');