pgfplots:删除数据点而不改变原始表格

pgfplots:删除数据点而不改变原始表格

我想知道如何使用 pgfplots 从由外部表“data.csv”生成的图中移除一个或多个数据点。在最小例子下面,我想在不改变原始表格的情况下删除第三点(3,5)。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b,c,d
1,4,5,1
2,3,1,5
3,5,6,1
4,1,4,9
5,3,4,7
\end{filecontents*}


\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [x=a, y=c, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

编辑

另外,最好以某种方式告诉 pgfplots 专门删除“第三点”,而不告诉坐标。或者至少只提供横坐标值。在 Origin 软件中也遇到了类似的功能,您可以手动选择要删除的点。

答案1

你可以轻松做你想做的事。只需使用类似下面的命令:

\begin{tikzpicture}
    \begin{axis}[skip coords between index={2}{3}]
        \addplot table [x=a, y=c, col sep=comma] {data.csv};
    \end{axis} 
\end{tikzpicture}

请注意,当您想要删除第 3 行时,它是第一个数字 (2) 来标识它,因为如果您有...index={a}{b}它,则会删除索引i为 的行a<= i<b。这是正确的,因为我们从 开始计数i=0,因此您要删除的行的索引为i=2。您可以根据需要添加要跳过的多行,例如:

...
\begin{axis}[skip coords between index={2}{3},
             skip coords between index={5}{6}]
...

这将删除原始文件中的第 3 行 ( i=2) 和第 6 行 ( i=5) 的数据(不计算标题,假设您有那么多行)。在您的示例中,现在数据位于单独的文件中,您可以使用以下命令删除第一个 (0) 和最后一个 (4):

\documentclass{article}
\usepackage{pgfplots}

    \begin{document}
    \begin{tikzpicture}
            \begin{axis}[skip coords between index={0}{1},
                         skip coords between index={4}{5}]
                \addplot table [x=a, y=c, col sep=comma] {data.csv};
            \end{axis}
    \end{tikzpicture}
\end{document}

制作

在此处输入图片描述

相关内容