我的最终目标是绘制一个彩色填充的数据轮廓图。我最接近的方法是生成一个surf
(shader = 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}
最终的结果如下: