如何在 pgfplot 上将第三个变量(z)绘制为颜色渐变

如何在 pgfplot 上将第三个变量(z)绘制为颜色渐变

我正在尝试使用它pgfplots创建一个具有 3 个变量的二维图,其中第三个变量被绘制为颜色渐变。

\begin{tikzpicture}[scale=0.75]
\begin{axis}[xlabel=Selta,ylabel={Hitastig $[\si{\celsius}]$},colorbar,colormap/greenyellow]
\addplot[mesh,ultra thick]
    table[x=S,y=POT_T,z=DB, col sep=semicolon]{287.csv};
\legend{Stöð 287}
\end{axis}
\end{tikzpicture}

我已经查看了 pgfplots 手册,但是不知何故我忽略了如何将 z 变量绘制为颜色渐变,此代码自动假定要绘制 y 变量。

似乎总是存在这样的问题,这些问题很容易被忽视,所以我希望这些问题能很快得到解决。

提前致谢 :)。

编辑:

虽然我找到了这个特定问题的答案,但还有另一个非常相关的问题我希望得到答案,如果这应该是一个单独的问题,请纠正我。

我想反转颜色条,并发现这样做的代码是放入colorbar style={z dir=reverse}轴选项中。但根据之前的答案,我不能使用 z 作为变量名(或者我可以吗?)并且pgfplots不接受 colorbar style={point meta dir=reverse}

如何实现这一点,或者如何以一种让你反转颜色条的方式回答前面的问题?

答案1

补充您的答案:您可以通过旋转颜色条并将标签放在另一侧来“伪造”反转的颜色条。颜色条本质上是另一个轴,因此可以使用普通轴的所有样式。

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}[scale=0.75]
\begin{axis}[colorbar,colormap/cool,
  colorbar style={xshift=1cm,
    yticklabel pos=left,
    yticklabel style={anchor=west},
    rotate=180}]
\addplot[scatter,point meta=explicit,ultra thick,point meta min={1}, point meta max={700}]
    table[x=S,y=POT_T, meta=DB, col sep=semicolon]{
      S;POT_T;DB
      0;0;650
      1;0.5;400
      2;2;150
};
\end{axis}
\end{tikzpicture}

\end{document}

带有伪反转颜色条的轴

答案2

关于反转颜色条:Jake 的回答在这里相当不错,但您也可以使用相同的论点,但使用更“内置”的键:您还可以提供-- 它应该会自动调整所有剩余的内容。也许应该添加colorbar style={y dir=reverse}更直观的键。point meta dir=reverse

请记住,这需要\pgfplotsset{compat=1.3}或更新版本。

答案3

这回答了问题的原始部分:

我终于知道该怎么做了。似乎我必须命名第三个变量meta并添加meta point=explicitaddplot选项中。我还看到可以通过添加和将自己的范围添加到颜色栏,point meta min={value}point meta max={value}得到类似以下代码的内容

\begin{tikzpicture}[scale=0.75]
\begin{axis}[xlabel=Selta,ylabel={Hitastig $[\si{\celsius}]$},colorbar,colormap/cool]
\addplot[scatter,point meta=explicit,ultra thick,point meta min={1}, point meta max={700}]
    table[x=S,y=POT_T, meta=DB, col sep=semicolon]{287.csv};
\legend{Stöð 287}
\end{axis}
\end{tikzpicture}

PS 当你最终找到答案时,这样回答你自己的问题可以吗?

相关内容