#matplotlibのグラフをemfファイル形式に変換
↑ここで述べましたが、emfファイル形式で直接保存できないという悩みがありました。
自分なりの解決方法をみつけたので、ここにまとめておきます。
#環境
・Ubuntu16.04
・Python3.5.2
・matplotlib2.0.0
・Inkscape0.91(eps→emf変換で使用) ←これがインストールされている必要があります
#方法
(1)matplotlibで描いたグラフをsvg形式で保存する plt.savefig('sample.svg')
(2)コマンドラインから
Inkscape [変換元ファイル名.svg] -M [ファイル名.emf]
$ inkscape sample.svg -M sample.emf
#pythonから一発でやる場合
コマンドラインをpythonで実行する方法はこんなんでいいんでしょうか。
とりあえずこれでやりたいことはできました。
import subprocess
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3])
plt.savefig("sample.svg")
subprocess.call('inkscape sample.svg -M sample.emf',shell=True)
plt.show()
以上
###(memo)matplotlib2.0.0で保存可能な形式
このようにして調べました
import matplotlib.pyplot as plt
fig = plt.figure()
print(fig.canvas.get_supported_filetypes())
結果がリストがこれ
'pdf': 'Portable Document Format',
'ps': 'Postscript',
'rgba': 'Raw RGBA bitmap',
'pgf': 'PGF code for LaTeX',
'svgz': 'Scalable Vector Graphics',
'svg': 'Scalable Vector Graphics',
'raw': 'Raw RGBA bitmap',
'eps': 'Encapsulated Postscript',
'png': 'Portable Network Graphics'
###(memo)inkscape0.91 コマンドラインオプション
使用法: inkscape [オプション...] [ファイル...]
有効なオプション:
-V, --version Inkscape のバージョンを表示
-z, --without-gui X サーバーを使用しない (コンソールでファイルの処理だけを行う)
-g, --with-gui $DISPLAY 変数が設定されていなくても X サーバーの利用を試みる
-f, --file=ファイル名 指定したドキュメントを開く
(オプション文字列は無視されることがあります)
-p, --print=ファイル名 指定されたファイルにドキュメントを印刷 ('| program' を使うとパイプ)
-e, --export-png=ファイル名 ドキュメントを PNG ファイルにエクスポート
-d, --export-dpi=DPI ビットマップへのエクスポートおよび PS/EPS/PDF
のフィルターのラスタライズの解像度 (デフォルトは 90)
-a, --export-area=x0:y0:x1:y1 SVG ユーザー単位でのエクスポート領域 (デフォルトはページ、0,0
は左下の角)
-D, --export-area-drawing エクスポート領域は (ページでなく) 描画全体
-C, --export-area-page エクスポート領域はページ全体
--export-margin=値 PS/EPS/PDF のみ、エキスポート領域周辺のマージンを mm で設定
(デフォルトは 0)
--export-area-snap エクスポート領域外のビットマップを SVG
ユーザー単位の近似整数値へスナップ
-w, --export-width=幅 生成されるビットマップ幅をピクセル値で指定
(エクスポート解像度より優先)
-h, --export-height=高さ 生成されるビットマップの高さをピクセル値で指定
(エクスポート解像度より優先)
-i, --export-id=ID エクスポートするオブジェクトの ID
-j, --export-id-only export-id
のオブジェクトのみをエクスポートし、他はすべてエクスポートしない
(export-id 指定の場合のみ)
-t, --export-use-hints ファイル名や DPI ヒントを使用してエクスポート (export-id指定の場合のみ)
-b, --export-background=色 エクスポートビットマップの背景色 (SVG でサポートされるカラー文字列)
-y, --export-background-opacity=値 エクスポートビットマップの透明度 (0.0から1.0、または1から255)
-l, --export-plain-svg=ファイル名 プレーン SVG ファイルへエクスポート
(sodipodiやinkscape名前空間を使用しない)
-P, --export-ps=ファイル名 ドキュメントを PS ファイルにエクスポート
-E, --export-eps=ファイル名 ドキュメントを EPS ファイルにエクスポート
--export-ps-level=PS レベル エクスポートに使用する PostScript レベルを選択してください。レベル 2
(デフォルト) と 3 が使用可能です。
-A, --export-pdf=ファイル名 ドキュメントを PDF ファイルにエクスポート
--export-pdf-version=PDF_VERSION 指定されたバージョンの PDF でエキスポートする。(ヒント: PDF
エキスポートダイアログで確認できる正確な文字列を指定すること。例:
"PDF 1.4" は PDF-a に準拠)
--export-latex テキストを除き PDF/PS/EPS へエクスポートする。PDF/PS/EPS に加え LaTeX
ファイルをエクスポートすると、テキストは PDF/PS/EPS
の先頭に置かれる。LaTeX には \input{latexfile.tex} のような出力が含まれる。
-M, --export-emf=ファイル名 ドキュメントを拡張メタファイル (EMF) にエクスポート
-m, --export-wmf=ファイル名 ドキュメントを Windows メタファイル (WMF) にエクスポート
-T, --export-text-to-path エクスポート時にテキストオブジェクトをパスに変換 (PS, EPS, PDF, SVG)
--export-ignore-filters ラスタライズの代わりにフィルターされたオブジェクトをフィルターなしでレンダリング (PS, EPS, PDF)
-X, --query-x 描画全体か、指定がある場合は --query-id のオブジェクトの X
座標を問い合わせ
-Y, --query-y 描画全体か、指定がある場合は --query-id のオブジェクトの Y
座標を問い合わせ
-W, --query-width 描画全体か、指定がある場合は --query-id
のオブジェクトの幅を問い合わせ
-H, --query-height 描画全体か、指定がある場合は --query-id
のオブジェクトの高さを問い合わせ
-S, --query-all すべてのオブジェクトの id,x,y,w,h を一覧表示
-I, --query-id=ID 位置や大きさを問い合わせるオブジェクトの ID
-x, --extension-directory エクステンションのディレクトリを出力して終了
--vacuum-defs 未使用の定義をドキュメントの defs セクションから削除する
--verb-list Inkscape の すべての VERB の ID を一覧表示
--verb=VERB-ID Inkscape を開いたときに呼び出す VERB
--select=OBJECT-ID Inkscape を開いたときに選択するオブジェクトの ID
--shell Inkscape をインタラクティブシェルモードで起動
Help options:
-?, --help Show this help message
--usage Display brief usage message