是否可以在 pgfplot 中包含的点处对表格进行排序。在下面的示例中,点 x=3 和 x=4 已按顺序进行绘图。我更希望找到“就地”解决方案,而不是使用 pgfplotstable 的复杂解决方案。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table[x=x, y=y] { %something like table[sort index=#1]?)
x y
1 11
2 14
4 26
3 39
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
如果您不介意将gnuplot
其用作 PGFPlots 的后端,则可以使用smooth unique
您提到的选项。这实际上是一种很好的方法,因为它的gnuplot
排序速度比 PGFPlotstable 快得多。
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
x y
1 11
2 14
4 26
3 39
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot gnuplot [raw gnuplot] {plot 'testdata.dat' using 1:2 smooth unique;};
\end{axis}
\end{tikzpicture}
\end{document}
否则,我认为你不会绕过预处理步骤,无论是使用 pgfplotstable 还是其他工具。正如 Christian Feuersänger 所说这里,该sort
选项仅适用于排版表格,而不适用于绘图。解决方案不会很“复杂”,但是,只需一行代码即可对表格进行排序并将结果存储在新宏中:
\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
x y
1 11
2 14
4 26
3 39
\end{filecontents}
\pgfplotstablesort{\sorted}{testdata.dat}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table {\sorted};
\end{axis}
\end{tikzpicture}
\end{document}