matplotlibのFigureの文字をパスじゃなく文字としてSVGに出力する方法 [Python]

このエントリーをはてなブックマークに追加

質問:

matplotlib.pyplot.savefig("test.svg", format="svg")で文字を大量に含むSVGとしてFigureを作ると、SVGファイルが膨大になるんだけど、これって文字がSVG内でパスとして保存されるからだよね。
パスだとSVGの解釈も難しくなるし、文字がSVGの文字として出力したいんだけど、matplotlibでカーブじゃなく文字を文字として出力させる方法はってある?

SVGファイルではこんなコードになってる。

<path d=" M9.8125 72.9062 L55.9062 72.9062 L55.9062 64.5938 L19.6719
64.5938 L19.6719 43.0156 L54.3906 43.0156 L54.3906 34.7188 L19.6719
34.7188 L19.6719 8.29688 L56.7812 8.29688 L56.7812 0 L9.8125 0 z "
id="DejaVuSans-45" />

By Bram | 質問日時: 2015年12月21日 1:43



回答1:

Matplotlibs SVG文字レンダリングは、matplotlibrcかコード内でできるよ。
http://matplotlib.org/users/customizing.htmlを参照:

#svg.fonttype : 'path' # SVGフォントを扱う方法:
# 'none': SVGが表示されるマシンにフォントがインストールされていると仮定。
# 'path': 文字をパスとして埋め込む - ほとんどのSVGレンダラでサポートされている
# 'svgfont': 文字をSVGフォントとして埋め込む - Chrome、オペラとサファリでサポートされてる

これを使えば、フォントの埋め込みも文字をパスとしてレンダリングするのも両方できるよ:

import matplotlib.pyplot as plt
plt.rcParams['svg.fonttype'] = 'none'

By zliw | 回答日時: 2016年3月1日 22:18



Source: Output matplotlib figure to SVG with text as text, not curves

共有 コメント