テスト環境:Mac Studio (Apple M4 Max, 2025) macOS Sequoia 15.5, Python 3.13.5, Matplotlib 3.10.3
~/.matplitlib/matplotlibrc:
backend: MacOSX font.family: Hiragino Sans font.weight: 400
テストコード:
import matplotlib.pyplot as plt plt.plot([-1, 1]) plt.title("日本語タイトル") plt.savefig("filename.png", bbox_inches="tight") plt.savefig("filename.webp", bbox_inches="tight", pil_kwargs={"lossless": True}) plt.savefig("filename.jpg", bbox_inches="tight") plt.savefig("filename.svg", bbox_inches="tight") plt.savefig("filename.svgz", bbox_inches="tight")
filename.png (22905バイト)
filename.webp (6864バイト) (ロスレス)
filename.jpg (17292バイト)
filename.svg (24168バイト)
filename.svgz (6355バイト)
PDFについては次で実験:
import matplotlib.pyplot as plt plt.rcParams["font.family"] = ["Source Han Sans"] plt.rcParams["font.weight"] = "normal" plt.plot([-1, 1]) plt.title("日本語タイトル") plt.savefig("filename.pdf", bbox_inches="tight")
filename.pdf (9124バイト)
フォントを埋め込まないSVG:
import matplotlib.pyplot as plt plt.rcParams["font.family"] = ["sans-serif"] plt.rcParams["font.weight"] = "normal" plt.rcParams["svg.fonttype"] = "none" plt.plot([-1, 1]) plt.title("日本語タイトル") plt.savefig("filename2.svg", bbox_inches="tight")
filename2.svg (11285バイト)
拡張子 svgz のファイルは,単に svg を gzip で圧縮しただけのものである。これをファイルとして開いて表示できるブラウザは残念ながらなさそうである。ネット越しなら,svg を表示できるブラウザは svgz も表示できる。ただし,そのためにはまず,Webサーバの /etc/mime.types に
image/svg+xml svg svgz
という行が必要である。なければ httpd.conf (/etc/httpd/conf あたりに入っている) に
AddType image/svg+xml svg svgz
と書き込んでおけばよい。これに加えて,httpd.conf には
AddEncoding gzip svgz
という行も必要である。httpd.conf の編集が難しい場合は,画像と同じディレクトリ(または親ディレクトリ)に .htaccess というファイルを作って,httpd.conf に書き込むべきことを書き込んでおく。
苦労して svgz にしなくても、svg のままでもたいていはサーバ・ブラウザ間で勝手に圧縮される。例えば okumuralab.org の場合は Brotli圧縮 されるはずである。
Last modified: