Seite 1 von 1

Diagrammanzahl in Abhängigkeit von Anzahl Ergebnisspalten

Verfasst: Mi 22. Jul 2015, 11:32
von Mike_1
Hallo zusammen,

ich habe ein Problem und hoffe ihr könnt mir helfen. Habe zur Verdeutlichung ein kleines Testbeispiel erstellt.

Aus Berechnungen erhalte ich eine Textdatei (wie z.B. Data1.txt) mit mehreren Spalten. Für jede Spalte Menge(i) soll ein Diagramm erzeugt werden. Die Spaltenanzahl ist variabel und soll im Latex File abgefragt und berücksichtigt werden. Bei nur einer Menge1 soll nur ein Diagramm erzeugt werden, bei zwei Mengen zwei Diagramme usw. Hat jemand einen Vorschlag?

Vielen Dank schon einmal.


kleines Testbeispiel für 3 Mengen:


Data1.txt:
Mess	    Menge1  Menge2  Menge3  
1               5           3         2     
2	       10         11        10     
3	       12         13        11     
4	       14         16        17     
5	       17         19        18     
6	       20         21        22     
7	       24         23        24     
8	       27         28        27     
9	       31         32        31     
10	       36         35        33     
\documentclass[paper=a4,12pt,version=last,landscape]{scrartcl}

\usepackage{pgfplots}  

\begin{document}

  \begin{tikzpicture} 
  \begin{axis}[width=0.9\textwidth,height=0.9\textheight]                               
	\addplot table[x=Mess, y=Menge1] {data1.txt};
  \end{axis}
  \end{tikzpicture}


  \begin{tikzpicture} 
  \begin{axis}[width=0.9\textwidth,height=0.9\textheight]                               
  \addplot table[x=Mess, y=Menge2] {data1.txt};
  \end{axis}
  \end{tikzpicture}


  \begin{tikzpicture} 
  \begin{axis}[width=0.9\textwidth,height=0.9\textheight]                               
  \addplot table[x=Mess, y=Menge3] {data1.txt};
  \end{axis}
  \end{tikzpicture}

\end{document}


Verfasst: Mi 22. Jul 2015, 12:15
von esdd
Möglich wäre
\begin{filecontents*}{data1.txt}
Mess Menge1 Menge2 Menge3 
1 5 3 2 
2 10 11 10 
3 12 13 11 
4 14 16 17 
5 17 19 18 
6 20 21 22 
7 24 23 24 
8 27 28 27 
9 31 32 31 
10 36 35 33
\end{filecontents*}

 \documentclass[12pt,landscape]{scrartcl} 
 \usepackage{pgfplots}
 \pgfplotsset{compat=newest}% damit es in Online-Editor läuft 
 %\pgfplotsset{compat=1.12}% aktuelle Version

 \usepackage{datatool}
 \DTLsetseparator{ }% Leerzeichen als Spaltentrenner
 \DTLloaddb{data1}{data1.txt}
 \newcommand\Anzahl{}
 \edef\Anzahl{\DTLcolumncount{data1}}
 \DTLdeletedb{data1}

 \begin{document} 
   \foreach[count=\j] \i in {2,...,\Anzahl}{
     \begin{tikzpicture} 
       \begin{axis}[width=0.9\textwidth,height=0.9\textheight] 
        \addplot table[x=Mess, y index=\j] {data1.txt}; 
       \end{axis} 
     \end{tikzpicture}
   \par}
 \end{document}
wobei ich datatool hier nur zum Zählen der Spalten verwendet habe, da ich auf die Schnelle nicht gefunden habe, ob und wie man mit pgfplotstable die Spaltenanzahl ermitteln könnte.

Gruß
Elke

Verfasst: Mi 22. Jul 2015, 15:07
von Mike_1
Hallo Elke,

vielen Dank für Deine Antwort und Hilfe. Es funktioniert alles, prima. An einer Sache hängt es leider noch:

Bei meinem Minimalbeispiel waren die Achsenbeschriftungen, Einteilungen usw. gleich. Die sind bei im Allgemeinen unterschiedlich. Ich müsste daher die gesamte Definition in die Schleife integrieren. Im Latex sind Schleifen usw. für mich absolutes Neuland. Daher hätte ich noch zwei kleine Fragen

- es sind erstmal max. 5 Ergebnisspalten, lässt sich das zunächst über eine Abfrage realisieren, also

if Anzahl 1 dann

else if anzahl 2 dann

usw.

- hätte jemand einen Vorschlag wo man die ganze Definition von Schleifen in latex usw. gut nachlesen kann. Das ist sicherlich die elegantere Variante, da muss ich mich erstmal einarbeiten.


Vielen Dank schon einmal.

Verfasst: Mi 22. Jul 2015, 15:36
von esdd
Du kannst mit \foreach mehrere Laufvariablen gleichzeitig verwenden. Am besten Du liest das in der Doku von [d]pgf[/d]/tikz nach.

Die andere Frage betrifft Verzweigungen. Dafür gibt es Pakete wie ifthen oder etoolbox. Es geht auch mit \ifcase
\documentclass{scrartcl}

\newcommand\Anzahl{3}

\begin{document}
\ifcase\Anzahl
  Null%
  \or
  Eins
  \or
  Zwei
  \or
  Drei
  \or
  Vier
  \else
  Viele
  \fi
\end{document}
Gruß
Elke

Verfasst: Mi 22. Jul 2015, 17:43
von Mike_1
Hallo Elke,

vielen Dank noch einmal für Deine Hilfe. Schaue mir das ganze in Ruhe genau an.

Viele Grüße,
Mike_1