Groupplot definieren

Tabellen und Grafiken erstellen und anordnen


FMStyl3r
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 7. Dez 2013, 14:58
Wohnort: Lübeck

Groupplot definieren

Beitrag von FMStyl3r »

Moin,


ich würde gerne ein "groupplot" erstellen.

Nach einlesen der Datei bekomme ich die Fehlermeldung:
! LaTeX Error: Environment groupplot undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
Anmerkungen, die bei der x Achse handelt es sich jeweils um ein Datum, Beispielsweise vom 19.06 - 03.09, wobei jedem Tag ein Wert zugeordnet ist - habe den Weg jedes x expliziet zu bestimmen über symbolic x coords={June,July,August,September} noch nicht ausprobiert...

Ich habe hier mal meinen Ausschnitt des Quellcode:
\begin{tikzpicture} 
\begin{groupplot}[group style={group size=2 by 1},ymin=500,ymax=900,height=10cm,width=20cm
] 
	\nextgroupplot 
		\addplot[very thick] file {plotdata/SumupTagMonatAuftrag.csv}; 
		\draw[red,dashed,thick] (axis cs:11,0) rectangle (axis cs:32,850); 	
	\nextgroupplot[xmax=31,ymax=200] 
		\addplot[very thick] file {SumupTagMonatAuftrag.csv}; 
\end{groupplot} 
\draw[thick,blue,->,shorten >=2pt,shorten <=2pt] (group c1r1.east) -- (group c2r1.west); 
\end{tikzpicture}
Wenn ich eine schnelle Antwort bekommen könnte wäre es klasse!

Viele Grüße

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Bitte erstelle ein vollständiges Minimalbeispiel. Mit dem Codefetzen kann man rein gar nichts anfangen.

Die Fehlermeldung sagt aber ganz eindeutig, dass die groupplot Umgebung nicht definiert ist. Du musst also vermutlich mindestens noch entweder
\usepgfplotslibrary[groupplots]
oder
\usetikzlibrary[pgfplots.groupplots]
ergänzen (also eines von beiden).

Gruß
Elke
Zuletzt geändert von esdd am Sa 7. Dez 2013, 17:55, insgesamt 1-mal geändert.

FMStyl3r
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 7. Dez 2013, 14:58
Wohnort: Lübeck

Beitrag von FMStyl3r »

Vielen Dank für die Info!

Hier nun als Beispiel:
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american,ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=bibtex,backref=true,style=authortitle-icomp]{biblatex} 
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage[german]{fancyref}
\usepackage[margin=3cm, right=2cm]{geometry}
\usepackage{appendix}
\usepackage{lscape}
\usepackage{makeidx}
\usepackage[final]{pdfpages}
\usepackage{float}
\usepackage{eurosym}
\usepackage{setspace}
\usepackage[printonlyused]{acronym}
\usepackage[format=plain,justification=centering,singlelinecheck=off]{caption}
\usepackage[multiple,bottom,hang]{footmisc}
\setlength{\footnotemargin}{0pt}
\usepackage{titlesec} 
\usepackage{enumerate}
\usepackage{booktabs}
\usepackage{pgfplotstable}
\usepackage{array}
\usepackage{tikz}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{pgfplots.groupplots}
\usepackage{pgfplots}
\usepackage[locale=DE]{siunitx}
\usepackage[]{url}
\usepackage[german]{todonotes}
\usetikzlibrary{spy}
\usepackage{pgfplotstable}
\usepackage{array}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\begin{groupplot}[group style={group size=2 by 1},ymin=500,ymax=900,height=10cm,width=20cm
]
   \nextgroupplot
      \addplot[very thick] file {SumupTagMonatAuftrag.csv};
      \draw[red,dashed,thick] (axis cs:11,0) rectangle (axis cs:32,850);    
   \nextgroupplot[xmax=31,ymax=200]
      \addplot[very thick] file {SumupTagMonatAuftrag.csv};
\end{groupplot}
\draw[thick,blue,->,shorten >=2pt,shorten <=2pt] (group c1r1.east) -- (group c2r1.west);
\end{tikzpicture} 

\end{document}
Die zusätzlichen Packete bringen mich schon mal weiter und jetzt ist es nicht mehr undefiniert!
Erneute Fehlermeldung:
! Package PGF Math Error: Could not parse input ';Auftr�ge;Kalendertag' as a fl
oating point number, sorry. The unreadable part was near ';Auftr�ge;Kalendertag
'.
Ich glaube das die Daten der x-Achse nicht zugeordnet werden können!

Ich würde gerne als eine Koordinate x=26.06(Datum) anstelle von 1,2,3,4,etc. lassen?!

Viele Grüße

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Bitte schau unter dem oben von mir angegebenen Link, wie man ein Minimalbeispiel erstellt. Es muss alle Informationen enthalten, die notwendig sind, um das Problem zu reproduzieren. Ohne Dokumentenklasse und ohne (Beispiel-)Daten wird das nichts.

Dafür sind viele der geladenen Pakete nicht für das Problem relevant. Es genügen vermutlich inputenc, pgfplots, pgfplotstable und \usepgfplotslibrary{groupplots}.

Gruß
Elke

FMStyl3r
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 7. Dez 2013, 14:58
Wohnort: Lübeck

Beitrag von FMStyl3r »

Hallo Elke, vielen Dank für deine Geduld!

Ein erneuter Versuch:
\documentclass[headsepline, footsepline, liststotoc, bibtotoc]{scrreprt}
\usepgfplotslibrary{groupplots}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\begin{groupplot}[group style={group size=2 by 1},ymin=500,ymax=900,height=10cm,width=20cm
]
   \nextgroupplot
      \addplot[very thick] file {SumupTagMonatAuftrag.csv};
      \draw[red,dashed,thick] (axis cs:11,0) rectangle (axis cs:32,850);    
   \nextgroupplot[xmax=31,ymax=200]
      \addplot[very thick] file {SumupTagMonatAuftrag.csv};
\end{groupplot}
\draw[thick,blue,->,shorten >=2pt,shorten <=2pt] (group c1r1.east) -- (group c2r1.west);
\end{tikzpicture}

\end{document}
 
Mein Daten stehen in einem CSV-file, der hier nicht beigefügt werden darf..:-(
Hier der versuch die Daten zur Verfügung zu stellen:
	Aufträge	Kalendertag
1	816	19. Juni
2	687	20. Juni
3	676	21. Juni
4	597	22. Juni
5	743	25. Juni
6	718	26. Juni
7	702	27. Juni
8	634	28. Juni
9	581	29. Juni
10	743	02. Juli
11	731	03. Juli
12	736	04. Juli
13	691	05. Juli
14	626	06. Juli
15	788	09. Juli
16	667	10. Juli
17	737	11. Juli
18	678	12. Juli
19	560	13. Juli
Ich hoffe es reicht jetzt aus! ;-)

Viele Grüße

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Ganz klar ist mir nicht, wie das ganze aussehen soll. Aber hier ist mal ein Vorschlag:
\documentclass[margin=5mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.9} % aktuelle Version von pgfplots
\usepackage{pgfplotstable} 
\usepgfplotslibrary{groupplots}

\usepackage{filecontents}
\begin{filecontents*}{Beispieldaten.csv}
 Nummer   Auftraege   Kalendertag
 1   816   {19.\,Juni}
 2   687   {20.\,Juni}
 3   676   {21.\,Juni}
 4   597   {22.\,Juni}
 5   743   {25.\,Juni}
 6   718   {26.\,Juni} 
 7   702   {27.\,Juni} 
 8   634   {28.\,Juni} 
 9   581   {29.\,Juni} 
 10   743   {02.\,Juli} 
 11   731   {03.\,Juli} 
 12   736   {04.\,Juli} 
 13   691   {05.\,Juli} 
 14   626   {06.\,Juli} 
 15   788   {09.\,Juli} 
 16   667   {10.\,Juli} 
 17   737   {11.\,Juli} 
 18   678   {12.\,Juli} 
 19   560   {13.\,Juli}
\end{filecontents*}
 
\begin{document} 

\begin{tikzpicture}
  \pgfplotstableread{Beispieldaten.csv}{\Data}
  \begin{groupplot}[
    group style={group size=2 by 1},
    height=10cm,width=20cm, % Das passt dann nicht auf eine A4 Seite, da jeder einzelne Plot so groß ist.
    ymin=500,
    xticklabels from table={\Data}{Kalendertag},xtick={1,...,19},
    xticklabel style={rotate=90,xshift=-0.8ex,anchor=mid east}
] 
    \nextgroupplot[xmin=1, xmax=19,ymax=900]
       \addplot[very thick] table [x=Nummer,y=Auftraege] {\Data}; 
       \draw[red,dashed,thick] (axis cs:11,0) rectangle (axis cs:32,850);
    \nextgroupplot[xmin=11,xmax=19,ymax=850]% falls das der rot umrandete Ausschnitt sein soll 
       \addplot[very thick] table [x=Nummer,y=Auftraege] {\Data}; 
\end{groupplot} 
\draw[thick,blue,->,shorten >=2pt,shorten <=2pt] (group c1r1.east) -- (group c2r1.west); 
\end{tikzpicture} 

\end{document}
Gruß
Elke

FMStyl3r
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 7. Dez 2013, 14:58
Wohnort: Lübeck

Beitrag von FMStyl3r »

Hallo Elke,

phenomenal! ;-) Vielen herzlichen Dank und einen schönen 2ten Advent!

Viele Grüße

FMStyl3r
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 7. Dez 2013, 14:58
Wohnort: Lübeck

Beitrag von FMStyl3r »

Ich nochmal..;-)

Gibt es eine Möglichkeit meinen Datenfile einzulesen und genau so abzubilden? Da fehlen noch ordenlich paar Zeilen oder bleibt mir nichts anderes übrig als sie einzutackern?!

Was mir noch helfen könnte, kann man die einzelnen Diagramme in der Größe variiren?!

Viele Grüße

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Die filecontents Umgebung ist hier nur ein Hilfsmittel um Beispieldaten im Minimalbeispiel drin zu haben. Sie erstellt bzw. überschreibt bei jedem pdflatex Lauf die Date Beispieldaten.csv. In der tikzpicture Umgebung wird dann genau diese extra erstellte Datei eingelesen.

Da du schon eine csv Datei mit deinen Daten hast, brauchst du weder die filecontents Umgebung noch das Paket filecontents. Dafür musst du in der Zeile

\pgfplotstableread{Beispieldaten.csv}{\Data} 
statt Beispieldaten.csv den Namen deiner csv Datei eintragen. Eventuell musst du dabei noch die Option col sep=<dein spaltentrenner> verwenden, falls die Trennung der Spalten nicht mit Leerzeichen erfolgt.

Die {...} um das Datum sind nur notwendig, wenn deine Spalten mit Leerzeichen getrennt werden, aber das Datum ebenfalls Leerzeichen enthält. Ich hab die Leerzeichen dann aber ohnehin gegen \, ausgetauscht, weil mir der Abstand zwischen Tag und Monat zu groß war.

Du kannst die Breite für jeden Plot einzeln vorgeben:
\documentclass[margin=5mm]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.9} % aktuelle Version von pgfplots 
\usepackage{pgfplotstable} 
\usepgfplotslibrary{groupplots} 

% Schreiben einer Datei mit den Daten fürs Minimalbeispiel
\usepackage{filecontents} 
\begin{filecontents*}{Beispieldaten.csv} 
  Nummer   Auftraege   Kalendertag 
  1   816   19.\,Juni 
  2   687   20.\,Juni 
  3   676   21.\,Juni 
  4   597   22.\,Juni 
  5   743   25.\,Juni 
  6   718   26.\,Juni 
  7   702   27.\,Juni 
  8   634   28.\,Juni 
  9   581   29.\,Juni 
  10   743   02.\,Juli 
  11   731   03.\,Juli 
  12   736   04.\,Juli 
  13   691   05.\,Juli 
  14   626   06.\,Juli 
  15   788   09.\,Juli 
  16   667   10.\,Juli 
  17   737   11.\,Juli 
  18   678   12.\,Juli 
  19   560   13.\,Juli 
\end{filecontents*} 
% Ende der Datei fürs Minimalbeispiel

\begin{document} 

\begin{tikzpicture}
% Einlesen der Datei mit den Daten
% \gegebenenfalls mit pgfplotstableread[col sep=...]{}{} Spaltentrenner angeben
   \pgfplotstableread{Beispieldaten.csv}{\Data}
   \begin{groupplot}[ 
     group style={group size=2 by 1}, 
     height=10cm,width=10cm, % Das passt dann nicht auf eine A4 Seite, da jeder einzelne Plot so groß ist. 
     ymin=500, 
     xticklabels from table={\Data}{Kalendertag},xtick={1,...,19}, 
     xticklabel style={rotate=90,xshift=-0.8ex,anchor=mid east} 
] 
     \nextgroupplot[xmin=1, xmax=19,ymax=900] 
        \addplot[very thick] table [x=Nummer,y=Auftraege] {\Data}; 
        \draw[red,dashed,thick] (axis cs:11,0) rectangle (axis cs:32,850); 
     \nextgroupplot[xmin=11,xmax=19,ymax=850,width=5cm]% falls das der rot umrandete Ausschnitt sein soll  
        \addplot[very thick] table [x=Nummer,y=Auftraege] {\Data}; 
\end{groupplot} 
\draw[thick,blue,->,shorten >=2pt,shorten <=2pt] (group c1r1.east) -- (group c2r1.west); 
\end{tikzpicture} 

\end{document}
Gruß
Elke

Antworten