auswahl der Daten in pgfplot?

Tabellen und Grafiken erstellen und anordnen


dima

auswahl der Daten in pgfplot?

Beitrag von dima »

Hallo Zusammen,

ich erstelle zur Zeit eine wiss. Arbeit mit LaTeX und verwende für Diagramme das pgfplots-Paket.

In einem Diagramm will ich die Punkte mit Daten aus mehreren externen Dateien darstellen, wobei die Punkte je nach Datei mit unterschiedlichen Kriterien gefiltert werden sollen:

Ein Beispiel:
\documentclass[a4paper]{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}

\addplot+[
   x filter/.code={
      \iftrue #1<10
           \def\pgfmathresult{}
      \fi
   }
] table[x index=0,y index=1] {test_1.dat}; 

\addplot+[
      \iftrue #1>10
           \iftrue #1<20
               \def\pgfmathresult{}
           \fi
      \fi
] table[x index=0,y index=1] {test_2.dat}; 
    
\addplot+[
      \iftrue #1>20
           \def\pgfmathresult{}
      \fi
] table[x index=0,y index=1] {test_3.dat}; 

\end{axis}
\end{tikzpicture}

\end{document}


Leider kann ich es nicht zum Laufen bringen.
Kann ich auf die x-Komponente jeder Koordinate mit #1 zugreifen?

Viele Grüße,
dim

Feuersaenger

Re: Auswahl der Daten

Beitrag von Feuersaenger »

Hallo,

im Prinzip ist das richtig, was Du machst - nur leidet das filter zeug an einigen schwaechen: es ist zum einen etwas low-level und zum anderen hat es zudem noch einen bug, sodass '#1' nur dann vorkommen kann, wenn der filter bei \begin{axis}[x filter....] angegeben wird.

Ein bugfix ist schon vorhanden wird aber erst in zukuenftigen versionen da sein.

Langer rede kurzer sinn: wenn Du wirklich einen lowlevel filter angeben willst, kannst Du auch '\pgfmathresult' anstelle von '#1' verwenden - das enthaelt glaube ich dasselbe wie '#1'. Dann muesstest Du noch die Filter als solche anpassen, denn '\iftrue 9 < 10' oder so ist keine gueltige TeX anweisung. Ausserdem verwendet pgfplots ein spezielles zahlformat, dass man mit \pgfmath.... auswerten muss/kann/darf. Dafuer gibst im pgf manual details (oder Du fragst nochmal spezifisch nach).

In dem von Dir gewuenschten Fall ist es bedeutend einfacher, auf vorgefertigte Filter zurueckzugreifen. Falls Dir das hilft, sparst Du jede Menge arbeit. Bspw. koenntest Du
\addplot+[restrict x to domain={10:1000}]
verwenden (vgl. das manual fuer derlei vorgaben).

Ich hoffe, das hilft zunaechst weiter.

Mit liebem Gruss

Christian

dim

Beitrag von dim »

danke Christian,
addplot+[restrict x to domain={10:1000}] 


das reicht mir vollkommen aus!

Antworten