如何制作没有方形网格的等高线图?

如何制作没有方形网格的等高线图?

我的最终目标是绘制一个彩色填充的数据轮廓图。我最接近的方法是生成一个surfshader = interp虽然不是我想要的,但实际上已经足够好了)。到目前为止,我的图如下所示:

轮廓

问题是我不得不用零填充我不想绘制的所有区域。这也导致了一个问题,即它在边缘周围产生了一个假的黄色光晕,因为它在我拥有的实际值和我必须放在它旁边的 0 之间进行插值。

我使用的数据是完整数据

我目前的代码是:

\documentclass[11pt]{article}
\usepackage[top=2.54cm, bottom=2.54cm, left=2.75cm, right=2.75cm]{geometry}
\usepackage{float}
\usepackage{subcaption}
\usepackage{pgfplots}
\usepackage{amsmath}

\begin{document} 
    \begin{figure}[H]
        \begin{tikzpicture}
        \begin{axis}
        [
        width=0.335\paperwidth,
        xlabel = Volts,
        ylabel = Time,
        view={0}{90},
        only marks,
        colorbar,
        colorbar style ={width = 6}
        ]
        \addplot3 [surf,shader=interp] table[x index =0,y index=1,z index=2]{Ekicks.txt};
        \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

我想要绘制的原始数据(没有那些我不需要的零)是清理数据

编辑

需要说明的是,问题不在于我必须用零填充空白处,我对此没有异议。实际问题是边缘周围产生的黄色光晕,这是由于我的零而不是实际数据造成的。

编辑2

因此,我取得了一些进展,并找到了一种使用 pgfplots 生成填充轮廓图的方法。我的新结果如下所示,这几乎正是我想要的:

\begin{tikzpicture}
        \begin{axis}
        [
        width=0.335\paperwidth,
        xlabel = Volts,
        ylabel = Time,
        view={0}{90},
        only marks,
        colorbar,
        colorbar style ={width = 6}
        ]
        \addplot3[contour filled={number=40}]
        table[x index =0,y index=1,z index=2]{Ekicks.txt};
        \end{axis}
        \end{tikzpicture}

在此处输入图片描述

我的问题是我仍然需要一个完整的网格。有人知道我如何绘制我需要的值吗?或者我该如何解决这个问题,比如强制将所有 0 设置为白色,而其他所有颜色保持不变?

答案1

nan当您使用而不是 来指示缺失数据时,0您可以要求pgfplot覆盖jump这些数据点,而不是discard使用unbounded coords键来添加它们。这可以更好地直观地表示您的实际数据。缺点是您无法推断未确定的区域,从而导致边界不规则。

\documentclass{article}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
  width=.7\linewidth,
  xlabel={Potential in Volt},
  ylabel={Time},
  view={0}{90},
  colorbar,
  unbounded coords=jump
] \addplot3 [
  surf,
  shader=interp,
] table [
  x index=0,
  y index=1,
  z index=2,
]{plot.dat};
\end{axis}
\end{tikzpicture}

\end{document}

最终的结果如下:

绘图结果图像

相关内容