以前,「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');