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 容易出错,而且在大多数情况下需要在生成的代码中进行手动调整。另一个原因是要有一致的图形和一致的方案,最好使用“纯”LaTex/PGFPlots 来设置。最好使用 PGFPlots 中定义的“样式/模板”来实现这一点。

回答您的问题:一种可能的解决方法是导出数据并使用 LuaLatex 编译文档。LuaLatex 没有大小限制,我强烈推荐它,因为它比 pdfLaTex 有许多其他优势。如果您想创建整个文档而不仅仅是图表,您可能需要对文档进行一些调整。

我应该使用 LuaTex 加载哪些包?了解更多信息。

希望这个回答能给你带来一点帮助。

相关内容