使用 pgfplots 根据数据绘制区域图并控制颜色

使用 pgfplots 根据数据绘制区域图并控制颜色

使用 pgfplots 根据数据制作 2D 区域图的标准方法是什么?我搜索了论坛,但没有找到有关此主题的帖子。

例如,数据将被组织成三列 CSV,表示 3D 表面。

也许可以开始用颜色填充“轮廓图”中轮廓之间的区域。但我希望有一种自动方法,即使有多个分离的区域应该具有相同的颜色,也能正常工作。

我想要的完美示例是下图,为了完整起见,来自这个 Mathematica.SX 线程。请忽略对数刻度、标题和标签,因为显然当前的问题与这些细节无关;除非欢迎类似的图例。

这里

此外,是否可以使用分段函数来控制颜色,类似于上面的 Mathematica 线程中询问的那样?

编辑

一个非常简单的例子是这里,作为 CSV。

答案1

编辑pgfplots1.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 中已经有一些可以继续使用的方法)。

第四种选择是放弃一致性并使用完全不同的工具,例如直接导入示例图形。

相关内容