pgfplots または tikzplotlib の Z 軸に対数スケールを使用した密度プロット

pgfplots または tikzplotlib の Z 軸に対数スケールを使用した密度プロット

tikzplotlib を使用して Python で 2D 密度プロットを作成しようとしています。カラーバー (および対応する z 軸) を対数スケールにする必要があります。

以下は、Tex 形式に変換したい PNG の図の例です。

ここに画像の説明を入力してください

以下は私が Python で使用しているコードです:

f = figure(figsize=(16.2,12.6)) 

ax = f.add_axes([0.2, 0.02, 0.72, 0.79])

axcolor = f.add_axes([0.95, 0.05, 0.02, 0.72])

im = ax.matshow(fun(X, Y), norm=LogNorm(vmin=1e-1, vmax=1e2))

t = [1e-2, 1e-1, 1e0, 1e1, 1e2]

f.colorbar(im, cax=axcolor, ticks=t)

tikzplotlib.save("2D.tex")

問題は、データが大きすぎるため、tikzplotlib がそれを別の png ファイルとして保存し、それを 2D.tex にアップロードすることです。ただし、その場合、ログ スケールではなくなります。

私はかなりの量の調査を行いましたが、私が見つけた答えはすべて、密度プロットが行列または関数によって定義されている場合を扱っています。代わりに、私は巨大な np.array を持っています。

どのような助けでも感謝します

答え1

これは tikzplotlib のバグのようで、モジュールを深く理解しなければ完全に解決できない可能性があります。一般的に、これは便利ですが、単純な線グラフ以外では使用しないことをお勧めします。その理由は、tikzplot はエラーが発生しやすく、ほとんどの場合、生成されたコードを手動で調整する必要があるためです。もう 1 つの理由は、一貫したスキームで一貫したグラフを作成することです。これは、「純粋な」LaTex/PGFPlots で設定する方が適切です。これは、PGFPlots で定義された「スタイル/テンプレート」を使用して最もよく実現されます。

質問にお答えすると、回避策としては、データをエクスポートして LuaLatex でドキュメントをコンパイルすることが考えられます。LuaLatex にはサイズ制限がなく、pdfLaTex に比べて多くの利点があるため、強くお勧めします。グラフだけでなくドキュメント全体を作成する場合は、ドキュメントに何らかの調整を加える必要があるでしょう。

見るLuaTex でロードする必要があるパッケージは何ですか?詳細については。

この回答が少しでもお役に立てれば幸いです。

関連情報