Graphen (Tikzpictures) gruppieren
Graphen (Tikzpictures) gruppieren
Hey Leute,
ich habe 4 Graphen von denen jeweils 2 nebeinenader geplottet werden sollen. Dabei besitzen alle Graphen die selbe X-Achsenbeschriftung, haben aber alle eine andere Y-Achsenbeschriftung.
Nun habe ich 2 mal diese 4 Graphen. Einmal für normalverteilte Daten und einmal für gleichverteilte Daten (genaueres ist hier nicht wichtig).
Deswegen würde ich diese 4 Graphen gerne gruppieren und eine Überschrift drüber schreiben: "Gleichverteilte Daten" oder ähnliches.
Wenn ich das bei allen Graphen als Title setze, dann passen die nicht mehr nebeneinander. Deswegen würde ich es gerne als Überschrift drüber schreiben.
Was fallen euch da für Lösungen ein?
Hier einmal ein Bild vom Status Quo: (siehe Anhang)
Grüße
K
ich habe 4 Graphen von denen jeweils 2 nebeinenader geplottet werden sollen. Dabei besitzen alle Graphen die selbe X-Achsenbeschriftung, haben aber alle eine andere Y-Achsenbeschriftung.
Nun habe ich 2 mal diese 4 Graphen. Einmal für normalverteilte Daten und einmal für gleichverteilte Daten (genaueres ist hier nicht wichtig).
Deswegen würde ich diese 4 Graphen gerne gruppieren und eine Überschrift drüber schreiben: "Gleichverteilte Daten" oder ähnliches.
Wenn ich das bei allen Graphen als Title setze, dann passen die nicht mehr nebeneinander. Deswegen würde ich es gerne als Überschrift drüber schreiben.
Was fallen euch da für Lösungen ein?
Hier einmal ein Bild vom Status Quo: (siehe Anhang)
Grüße
K
- Dateianhänge
-
- Unbenannt.PNG (66.36 KiB) 3782 mal betrachtet
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Vermutlich einfach als Text setzen. Du brauchst doch nichts spezielles dafür?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Stimmt. Manchmal kann es so simpel sein ^^. Hab ein center Block an den Anfang der Figure gesetzt und die Überschrift in nen textbf gesetzt.
Hab auch irgendwie drauf spekuliert, dass jemand mit etwas Ahnung um die Ecke kommt und mir irgendeine Lösung, die ich nicht beherrsche an den Kopf wirft (wie groupplots oder so).
Hab auch irgendwie drauf spekuliert, dass jemand mit etwas Ahnung um die Ecke kommt und mir irgendeine Lösung, die ich nicht beherrsche an den Kopf wirft (wie groupplots oder so).
Aller Anfang ist …
Wenn man etwas nicht beherrscht, dann liest man halt zunächst darüber und meldet sich gegebenenfalls mit einem Minimalbeispiel, um auftretende Probleme zu klären. Aber genau das bedurfte bei Dir ja bisher immer einer expliziten Aufforderung durch potentielle Helfer. Die Bibliothek `groupplots` von »pgfplots« ist in dessen Anleitung gut dokumentiert. Eine andere Möglichkeit, die Graphen in einer Art Matrix zu setzen, wäre durch »subcaption« (aus dem Bündel »caption«) gegeben.DEVV hat geschrieben:[…] Hab auch irgendwie drauf spekuliert, dass jemand mit etwas Ahnung um die Ecke kommt und mir irgendeine Lösung, die ich nicht beherrsche an den Kopf wirft (wie groupplots oder so).
Re: Aller Anfang ist …
Dem kann ich prinzipiell zustimmen. Allerdings gibt es Situationen, in denen die Wissenquelle zu umfangreich ist (wie bei groupplots z.B.) und dann baue ich lieber auf Erfahrung von Leuten, die das Paket schonmal verwendet haben und theoretisch wissen, was man damit anstellen kann, als ein Handbuch zu lesen.Ratgeber hat geschrieben: Wenn man etwas nicht beherrscht, dann liest man halt zunächst darüber
Immer ein Minimalbeispiel zu liefern ist auch nicht die Allzweckwaffe.Ratgeber hat geschrieben: Aber genau das bedurfte bei Dir ja bisher immer einer expliziten Aufforderung durch potentielle Helfer.
z.B. sehe ich keinen Sinn in einem Minimalbeispiel wenn:
1. Ich es nicht bauen kann, weil ich nicht weiß welche Eigenschaften meiner Vorlage Einflüsse auf den Effekt haben, den ich beobachte.
2. Man kein minimalbeispiel bennötigt um mir zu helfen (wie hier z.B.).
Wen es aus Prinzip stört, dass ich in solchen Fällen kein Minimalbeispiel liefer, der braucht mir halt nicht helfen. Dann sind wir alle glücklich und evtl. ist ja jemand trotzdem so nett und hilft mir ...
Auch hier wieder sehe ich ein Forum als "Forum" indem man sich mit anderen Leuten mit ggf. mehr Erfahrung auszutauscht, ohne eine Anleitung lesen zu müssen. Von daher finde ich diesen Beitrag schon legitim. Ich habe ein Problem, beschreibe es, liefer ein Foto vom Ist-Zustand in der PDF und jeder, der eine Idee hat, wie man mein Problem lösen kann, kann mir helfen.Ratgeber hat geschrieben: Die Bibliothek `groupplots` von »pgfplots« ist in dessen Anleitung gut dokumentiert.
So ich habe mir jetzt ohne viel Ahnung folgende Konfiguration zusammengesucht im Internet.
Allerdings sind die titles der nächsten Zeilen in den X-Achsenbeschriftungen der Zeilen zuvor.
Außerdem würde ich gerne die Y-Achsen-Beschriftung (Zahlen) auf beiden Seiten haben. Zusätzlich habe ich nicht gefunden, wie ich die Legende jetzt anzeigen lassen kann. Der Originale Graph sah vor, dass die 4 Kurven aus Graph 1 labels bekommen. Wenn ich das jetzt allerdings einfüge, hat der erste Graph eine eigene Legende.
Hokus Pokus:
Allerdings sind die titles der nächsten Zeilen in den X-Achsenbeschriftungen der Zeilen zuvor.
Außerdem würde ich gerne die Y-Achsen-Beschriftung (Zahlen) auf beiden Seiten haben. Zusätzlich habe ich nicht gefunden, wie ich die Legende jetzt anzeigen lassen kann. Der Originale Graph sah vor, dass die 4 Kurven aus Graph 1 labels bekommen. Wenn ich das jetzt allerdings einfüge, hat der erste Graph eine eigene Legende.
Hokus Pokus:
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{amsmath,amsfonts,amssymb} \usepackage{fullpage} \usepackage{verbatim} \usepackage{tikz,pgfplots} \usepgfplotslibrary{groupplots} \pgfplotsset{compat=1.6} \usetikzlibrary{pgfplots.groupplots} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \begin{tikzpicture}[smooth] \begin{groupplot}[group style={group size=2 by 2}, grid=both, grid style=dashed] \nextgroupplot[title={\textbf{Durchsatz:} Erzeugung}, ylabel={Durchsatz [Mebibyte / Sekunde]}, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}] \addplot coordinates { (25.0,27.2706) (26.0,27.6152) (27.0,27.0114) (28.0,25.4822) (29.0,23.6201) (30.0,18.3911) }; \addplot coordinates { (25.0,19.4066) (26.0,21.0439) (27.0,24.2483) (28.0,25.7858) (29.0,25.2643) (30.0,23.2176) (31.0,21.5053) }; \addplot coordinates { (25.0,25.8846) (26.0,25.6254) (27.0,24.5522) (28.0,23.8694) (29.0,22.3375) (30.0,18.2088) }; \addplot coordinates { (25.0,20.732) (26.0,22.2468) (27.0,25.0059) (28.0,26.3556) (29.0,24.6092) (30.0,22.1791) (31.0,20.697) }; \nextgroupplot[title={\textbf{Durchsatz:} Vorgängeranfrage}, yticklabel pos=right, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Durchsatz [Millionen Anfragen / Sekunde]}] \nextgroupplot[title={\textbf{Speicherplatz: } Nach Erzeugung}, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Speicherverbrauch [Gigabyte]}] \nextgroupplot[title={\textbf{Speicherplatz: } Während Erzeugung}, yticklabel pos=right, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Speicherverbrauch [Gigabyte]}] \legend{\(\sigma_r\), \(\sigma_\phi\)} \end{groupplot} \end{tikzpicture} \end{document}
Du bekommst die Beschriftung für die x-Achsen auch, wenn Du die Option xlabel und deren Zuweisung den Optionen der Umgebung groupplot hinzufügst. Sie muss dann nicht mehr jedem \nextgroupplot-Befehl mitgegeben werden.
Benutze die Option vertical sep.
DEVV hat geschrieben:Allerdings sind die titles der nächsten Zeilen in den X-Achsenbeschriftungen der Zeilen zuvor.
Benutze die Option vertical sep.
Dein Beispiel erzeugt für den ersten Graph keine Legende. Dafür müsste der von Dir verwendete Befehl vor dem zweiten \nextgroupplot-Befehl stehen.
Du kannst mit einem Querverweis eine gemeinsame Legende erreichen:
Du kannst mit einem Querverweis eine gemeinsame Legende erreichen:
\documentclass{article} %\usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{fullpage} \usepackage{pgfplots} \usepackage{showframe} \pgfplotsset{compat=1.16} \usepgfplotslibrary{groupplots} \begin{document} \begin{figure}[htbp] \centering \textbf{normalverteilte Daten}\par\medskip \begin{tikzpicture}[smooth] \begin{groupplot}[ group style={ group size=2 by 2, vertical sep=2cm }, grid=both, grid style=dashed, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, width=.48\linewidth ] \nextgroupplot[ title={\textbf{Durchsatz:} Erzeugung}, ylabel={Durchsatz [Mebibyte / Sekunde]}, legend to name=named,% <- eingefügt legend columns=-1, legend entries={$\sigma_r$,$\sigma_\phi$}% Alternative zu \legend ] \addplot coordinates { (25.0,27.2706) (26.0,27.6152) (27.0,27.0114) (28.0,25.4822) (29.0,23.6201) (30.0,18.3911) }; \addplot coordinates { (25.0,19.4066) (26.0,21.0439) (27.0,24.2483) (28.0,25.7858) (29.0,25.2643) (30.0,23.2176) (31.0,21.5053) }; \addplot coordinates { (25.0,25.8846) (26.0,25.6254) (27.0,24.5522) (28.0,23.8694) (29.0,22.3375) (30.0,18.2088) }; \addplot coordinates { (25.0,20.732) (26.0,22.2468) (27.0,25.0059) (28.0,26.3556) (29.0,24.6092) (30.0,22.1791) (31.0,20.697) }; \nextgroupplot[ title={\textbf{Durchsatz:} Vorgängeranfrage}, yticklabel pos=right, ylabel={Durchsatz [Millionen Anfragen / Sekunde]} ] \nextgroupplot[ title={\textbf{Speicherplatz:} Nach Erzeugung}, ylabel={Speicherverbrauch [Gigabyte]} ] \nextgroupplot[ title={\textbf{Speicherplatz:} Während Erzeugung}, yticklabel pos=right, ylabel={Speicherverbrauch [Gigabyte]} ] \end{groupplot} \path (group c1r2.south east) -- node [below=1cm] {\ref{named}} (group c2r2.south west);% <- eingefügt \end{tikzpicture} \end{figure} \end{document}
Das mit der Legende habe ich bereits gelöst. Interessant wäre noch
Hier einmal die aktuelle Version:€dit:
Weiß jemand wie ich die Breite der Plots oben so setze, dass das Tikzpicture nicht breiter als die Textbreite wird? Ich habe gerade das Problem, dass die Abbildung breiter als der Text ist.
% -*- mode: latex; mode: flyspell; ispell-local-dictionary: "en_US"; coding: utf-8; fill-column: 80 -*- \documentclass[a4paper,11pt,twoside,ngerman,color]{book} \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{amsmath,amsfonts,amssymb} \usepackage{fullpage} \usepackage{verbatim} \usepackage{tikz,pgfplots} \usepgfplotslibrary{groupplots} \usetikzlibrary{snakes,shapes,arrows,matrix,positioning} \pgfplotsset{compat=1.6} \usetikzlibrary{pgfplots.groupplots} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \begin{figure} \begin{center} \begin{tikzpicture} \begin{groupplot}[group style={group name=myplot, group size=2 by 2, vertical sep=64pt, horizontal sep=12pt}, grid=both, grid style=dashed] \nextgroupplot[title={\textbf{Durchsatz:} Erzeugung}, ylabel={Durchsatz [Mebibyte / Sekunde]}, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}] \addplot coordinates { (25.0,27.2706) (26.0,27.6152) (27.0,27.0114) (28.0,25.4822) (29.0,23.6201) (30.0,18.3911) }; \label{plots:plot1} \addplot coordinates { (25.0,19.4066) (26.0,21.0439) (27.0,24.2483) (28.0,25.7858) (29.0,25.2643) (30.0,23.2176) (31.0,21.5053) }; \label{plots:plot2} \addplot coordinates { (25.0,25.8846) (26.0,25.6254) (27.0,24.5522) (28.0,23.8694) (29.0,22.3375) (30.0,18.2088) }; \label{plots:plot3} \addplot coordinates { (25.0,20.732) (26.0,22.2468) (27.0,25.0059) (28.0,26.3556) (29.0,24.6092) (30.0,22.1791) (31.0,20.697) }; \label{plots:plot4} \nextgroupplot[title={\textbf{Durchsatz:} Vorgängeranfrage}, yticklabel pos=right, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Durchsatz [Millionen Anfragen / Sekunde]}] \addplot coordinates { (25.0,2.197) (26.0,2.06646) (27.0,1.97961) (28.0,1.8256) (29.0,1.56041) (30.0,0.776778) }; \addplot coordinates { (25.0,3.15803) (26.0,2.24898) (27.0,2.12293) (28.0,1.98624) }; \addplot coordinates { (25.0,2.14384) (26.0,2.06185) (27.0,1.98044) (28.0,1.8621) (29.0,1.75767) (30.0,0.845749) }; \addplot coordinates { (25.0,3.00063) (26.0,2.43515) (27.0,2.11192) (28.0,2.04601) (31.0,0.887256) }; \nextgroupplot[title={\textbf{Speicherplatz:} Nach Erzeugung}, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Speicherverbrauch [Gigabyte]}] \addplot coordinates { (25.0,1.83424) (26.0,3.78422) (27.0,8.48936) (28.0,19.8347) (29.0,46.6281) (30.0,121.489) (31.0,254.124) }; \addplot coordinates { (25.0,3.06541) (26.0,5.35606) (27.0,8.42623) (28.0,15.1457) (29.0,31.0536) (30.0,68.7423) (31.0,153.308) }; \addplot coordinates { (25.0,1.80516) (26.0,3.71904) (27.0,8.28671) (28.0,19.1333) (29.0,44.2815) (30.0,114.652) (31.0,238.808) }; \addplot coordinates { (25.0,2.82335) (26.0,4.98529) (27.0,8.04859) (28.0,14.6836) (29.0,30.0445) (30.0,65.7417) (31.0,143.733) }; \nextgroupplot[title={\textbf{Speicherplatz:} Während Erzeugung}, yticklabel pos=right, xlabel={Elemente in der Datenstruktur [$\log_2(n)$]}, ylabel={Speicherverbrauch [Gigabyte]}] \addplot coordinates { (25.0,1.83424) (26.0,3.78422) (27.0,8.48936) (28.0,19.8347) (29.0,46.6281) (30.0,121.489) (31.0,254.124) }; \addplot coordinates { (25.0,3.06541) (26.0,5.35606) (27.0,8.42623) (28.0,15.1457) (29.0,31.0536) (30.0,68.7423) (31.0,153.308) }; \addplot coordinates { (25.0,1.80516) (26.0,3.71904) (27.0,8.28671) (28.0,19.1333) (29.0,44.2815) (30.0,114.652) (31.0,238.808) }; \addplot coordinates { (25.0,2.82335) (26.0,4.98529) (27.0,8.04859) (28.0,14.6836) (29.0,30.0445) (30.0,65.7417) (31.0,143.733) }; \end{groupplot} \path (myplot c1r1.outer north west)% plot in column 1 row 1 -- node[anchor=south,rotate=90] {Gleichverteilung}% label midway (myplot c1r2.outer south west)% plot in column 1 row 4 ; %Legend \path (myplot c1r1.north west|-current bounding box.north)-- coordinate(legendpos) (myplot c2r1.north east|-current bounding box.north); \matrix[ matrix of nodes, anchor=south, draw, inner sep=0.2em, draw ]at([yshift=1ex]legendpos) { \ref{plots:plot1}& 1&[5pt] \ref{plots:plot2}&2&[5pt] \ref{plots:plot3}& 3&[5pt] \ref{plots:plot4}& 4\\ }; \end{tikzpicture} \caption{...} \label{plot:uniform_hm_u40} \end{center} \end{figure} \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Zuletzt geändert von DEVV am Sa 16. Nov 2019, 00:36, insgesamt 1-mal geändert.