6

I would like to know a way to remove one or more data points from a plot, using pgfplots, generated by an external table "data.csv". In the minimal example below, I would like to remove the third point (3,5) without changing the original table.

\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}

Edit

Also, it would be nice to somehow tell pgfplots to erase specifically the "third point", without telling the coordinates. Or at least, only providing the abcissa value. A similar feature is encountered in Origin software, where you choose the points to erase by hand.

1

1 Answer 1

7

You can easily do what you want. Just use something like the following:

\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}

Notice that when you want to remove line 3, it is the first number (2) that identifies it, because if you have ...index={a}{b} it removes lines with index i such that a<= i<b. This is true because we start counting at i=0, so the line you want to remove is indexed by i=2. You can add multiple lines to be skipped if you want, like:

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

This will remove data line 3 (i=2) and 6 (i=5)in the original file (not counting headers, and assuming you had that many lines). In your example, now with data in a seperate file, you could remove the first (0) and last (4) using:

\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}

Producing

enter image description here

2
  • 1
    I have a follow-up question: If I have two \addplot commands, is there a way to skip different coordinates for each of the commands?
    – tc88
    Commented Jul 26, 2017 at 5:10
  • \addplot table [x=a, y=c, col sep=comma, skip coords between index={2}{3}] {data.csv}; can be used for individual plots. Commented Jul 14, 2018 at 6:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .