私はpgf/tikzにエクスポートするライブラリのいくつかの特色を発見しました。
まず、matplotlib
では、クワッドメッシュ(ヒートマップ)がpgfに正しくエクスポートされますが、カラーバーはpngとしてエクスポートされます(opが検出したもの)。
matplotlib2tikz
ライブラリでも同じことを試みました。この場合、quadmeshはpngとしてエクスポートされますが、カラーマップは正しくエクスポートされます。ただし、カラーマップを別のAxes
にプロットし、ヒートマップ軸をクリアするなど、ヒートマップを非表示にすると、カラーバーがpngとしてエクスポートされます。
したがって、2つのエクスポートの出力を結合すると、両方のエクスポートを組み合わせることができます。
ヒートマップ:私はその後、カラーバーを取得cbar=False
とカラーバーのプロットを抑制
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame.from_csv("test.csv", sep=',')
sns.set('paper', 'white',
rc={'font.size': 10, 'axes.labelsize': 10,
'legend.fontsize': 8, 'axes.titlesize': 10,
'xtick.labelsize': 8,'ytick.labelsize': 8,
"pgf.rcfonts": False,
})
plt.rc('font', **{'family': 'serif', 'serif': ['Times']})
plt.rc('text', usetex=True)
fig, ax = plt.subplots(figsize=(6,6))
ax = sns.heatmap(df, linewidths=.5, ax=ax, cbar=False)
fig.savefig('heatmap_nocbar.pgf')
注:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from matplotlib2tikz import save as tikz_save
df = pd.DataFrame.from_csv("test.csv", sep=',')
sns.set('paper', 'white',
rc={'font.size': 10, 'axes.labelsize': 10,
'legend.fontsize': 8, 'axes.titlesize': 10,
'xtick.labelsize': 8,'ytick.labelsize': 8,
"pgf.rcfonts": False,
})
plt.rc('font', **{'family': 'serif', 'serif': ['Times']})
plt.rc('text', usetex=True)
fig, ax = plt.subplots()
ax = sns.heatmap(df, linewidths=.5, ax=ax,)
tikz_save('colormap.tex', figure=fig, strict=True)
ソリューションは現在、いくつかの汚い仕事を必要とします。私はこれが本当に良い習慣ではないことを認識していますが、これが私が見つけることができる唯一の方法です。
ファイルのcolormap.tex
ファイルでは、カラーマップに必要な行以外のすべての行を削除する必要があります。colormap.tex
の
始まり:角括弧の閉鎖と\end{axis}
の間のすべてを削除し、ファイルの終わりに
\begin{tikzpicture}
\begin{axis}[
hide axis,
colorbar,
colormap={mymap}{[1pt]
...
:
\begin{tikzpicture}
\begin{axis}[
... % definition of axis: delete these lines
colorbar,
colormap={mymap}{[1pt]
...
あなたはこれを取得するようにするため
]
... %delete these lines
\end{axis}
このファイルの変更は自動化できます。あなたのメインのTeXファイルでgithub
上のコードの例を含め、あなたは完全な作業例と完全な出力をしたい場合は、私がこの回答から、すべてを入れているこれら二つの図
\input{heatmap_nocbar.pgf}
\input{colorbar.tex}
を追加することができますgithub。
これはおそらく完璧な答えではありませんが、より良い例を示すために、matplotlib
とmatplotlib2tikz
のバックエンドで深く潜んでいるPythonスキルが欠けています。
パイソン2.7とpython 3.5でseaborn 0.7.0とmatplotlib 1.5.1でコードをテストしました。ラテックスを使ってpgf出力を実行すると、私には色彩のある素敵な人物が与えられました。質問にあなたの出力を含めることができますか? – Daan
私はコードがうまく動作すると思います。しかしOPの問題は、 'test-img0.png'をpgfの出力に含めたいのであり、別のpngファイルではないということです。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnestを指摘してくれてありがとう! – Daan