使用 pgfplots 根据数据制作 2D 区域图的标准方法是什么?我搜索了论坛,但没有找到有关此主题的帖子。
例如,数据将被组织成三列 CSV,表示 3D 表面。
也许可以开始用颜色填充“轮廓图”中轮廓之间的区域。但我希望有一种自动方法,即使有多个分离的区域应该具有相同的颜色,也能正常工作。
我想要的完美示例是下图,为了完整起见,来自这个 Mathematica.SX 线程。请忽略对数刻度、标题和标签,因为显然当前的问题与这些细节无关;除非欢迎类似的图例。
。
此外,是否可以使用分段函数来控制颜色,类似于上面的 Mathematica 线程中询问的那样?
编辑
一个非常简单的例子是这里,作为 CSV。
答案1
编辑从pgfplots
1.14 开始,你可以使用新的contour filled
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{axis}[colorbar, view={0}{90}]
\addplot3[domain=0:2*pi,trig format plots=rad,
patch type=bilinear,
contour filled={
levels={-0.4,-0.25,0,0.3,0.9}}]
{sin(x)*sin(y)};
\end{axis}
\end{tikzpicture}
\end{document}
该示例取自手册(结合使用patch type=bilinear
以提高质量)。示例显示了如何明确选择levels
;但手册还解释了如何仅使用number
或更高级的映射。colorbar
带有默认设置。
您的图像似乎属于填充轮廓图。
Pgfplots 不支持填充轮廓图(尽管这些在这里很方便)。
pgfplots 提供的替代方案是:您可以使用表面图(尽管从上方看时,这些图往往看起来像素化),或者您可以接受 pgfplots 无法通过内置方法做到这一点并将内容导入为.png
图形。
第二种选择是扩展 pgfplots 的功能,超越其自身的限制:您可以使用外部工具生成图形(无轴),使用它导入\addplot graphics
,pgfplots 会自动将其集成到您的图形中。
第三种选择可能是向 pgfplots 软件包作者(恰好是我)解释如何扩展现有的轮廓图处理程序以支持填充。这需要通过电子邮件完成(pgfplots 中已经有一些可以继续使用的方法)。
第四种选择是放弃一致性并使用完全不同的工具,例如直接导入示例图形。