![pgfplots 或 tikzplotlib 中 z 轴带对数刻度的密度图](https://linux22.com/image/423675/pgfplots%20%E6%88%96%20tikzplotlib%20%E4%B8%AD%20z%20%E8%BD%B4%E5%B8%A6%E5%AF%B9%E6%95%B0%E5%88%BB%E5%BA%A6%E7%9A%84%E5%AF%86%E5%BA%A6%E5%9B%BE.png)
我正在尝试使用 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 加载哪些包?了解更多信息。
希望这个回答能给你带来一点帮助。