我想知道如何使用 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}
制作