[pgfplots] Einfügen von Beschriftung in Gruppierung

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: [pgfplots] Einfügen von Beschriftung in Gruppierung

von Johannes_B » Mo 2. Feb 2015, 20:39

Bei Speicherintensiven Plots ist die externalize-Funktion von TikZ toll. Das bild wird im Hintergrund als pdf-Bild angefertigt, und dann nur noch dieses eingebunden. Die Berechnungen fallen weg.
Sehr vorteilhaft ist die Erkennung von Änderungen. Dann wird das pdf-Bild neu erstellt.
Vorraussetzung ist hier allerdings das Verwenden der Option shell-escape.

Betrachtungen

von Stamm- » Mo 2. Feb 2015, 17:58

feidel hat geschrieben:[…] Ich habe die version 1.5 genommen, weil ich dachte, dass das die aktuelle ist... 1.5>1.11 […]
Manchmal ist wissen halt besser als denken. ;) Mittlerweile ist auch die Version 1.12 im Paketdepot von TeX Live für die Aktualisierung erhältlich. Bei MiKTeX sieht es noch nicht danach aus.
feidel hat geschrieben:[…] Noch etwas nebenbei, ist es sinnvoller die Bilder vorher zu generieren und dann einfach in mein Hauptdokument einzubinden, oder soll ich in meinem Hauptdokument diese Diagrame generieren? […]
Ob das sinnvoll sein kann, ist fraglich. Zeit wird dadurch sicherlich nicht gespart, denn die Bearbeitung muss bei notwendigen Änderungen ohnehin erfolgen. Werden die Diagramme gleich im Quelltext des Dokuments erzeugt, ist jedenfalls die Übersicht größer, weil dann der Wechsel zwischen unterschiedlichen Dokumenten weg fällt.
feidel hat geschrieben:[…] Bei zu vielen Diagramen dauert es doch irgendwann viel zu lange das Dokument zu kompilieren?
Die Bearbeitungszeit für den Compiler kann auch schon bei sehr wenigen, dafür aber sehr komplexen Diagrammen in die Höhe schnellen. Davon sind besonders Graphen aus Messdaten betroffen.

von feidel » Mo 2. Feb 2015, 07:34

Vielen dank euch Beiden!

Ich habe die version 1.5 genommen, weil ich dachte, dass das die aktuelle ist... 1.5>1.11 :)

Noch etwas nebenbei, ist es sinnvoller die Bilder vorher zu generieren und dann einfach in mein Hauptdokument einzubinden, oder soll ich in meinem Hauptdokument diese Diagrame generieren?

Bei zu vielen Diagramen dauert es doch irgendwann viel zu lange das Dokument zu kompilieren?

von esdd » Mo 2. Feb 2015, 01:29

Man kann auch die einzelnen Diagramme eines groupplot beschriften:
\documentclass{scrartcl} 
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage{pgfplots}% lädt auch tikz und damit auch graphicx
\pgfplotsset{compat=1.5}% aktuell wäre noch 1.11., demnächst 1.12 

\usepgfplotslibrary{groupplots} 


\makeatletter
\newcommand\gpsubtitle[1]{(\@alph{\pgfplots@group@current@plot}) #1}
\makeatother

\begin{document}
\begin{figure}[htb] 
  \centering 
  \begin{tikzpicture}[smooth] 
    \begin{groupplot}[
        group style={group size=3 by 1,horizontal sep=6pt,vertical sep=12ex},
        width=.38\textwidth,
        xmin=0, ymin=0, ymax=4.5,
        no markers, grid=both, grid style=dashed,
        title style={at={([yshift=-8ex]0.5,0)},anchor=north},
        subtitle/.style={title=\gpsubtitle{#1}}
      ] 
      \nextgroupplot[ylabel={Spannung \(\sigma\) [MPa]},subtitle=Alumninium] 
         \addplot coordinates {(0,1) (1,2) (2,3)}; 
         \addplot coordinates {(0,0) (1,1) (2,2)}; 
      \nextgroupplot[yticklabel=\empty, xlabel={Radius \(r\) [mm]},subtitle=Titan] 
         \addplot coordinates {(0,1) (1,2) (2,3)}; 
         \addplot coordinates {(0,0) (1,1) (2,2)}; 
      \nextgroupplot[yticklabel pos=right,subtitle=Edelstahl] 
         \addplot coordinates {(0,1) (1,2) (2,3)}; 
         \addplot coordinates {(0,0) (1,1) (2,2)}; 
         \legend{\(\sigma_r\),  \(\sigma_\phi\)}
    \end{groupplot}
  \end{tikzpicture}
  \caption{Spannungsverlauf über den Radius $r$} 
  \label{fig:spannung-r} 
\end{figure}
\end{document}
Bild

Gruß
Elke
Dateianhänge
gl_gpbeschr.png
gl_gpbeschr.png (22.46 KiB) 4815 mal betrachtet

von Stefan Kottwitz » So 1. Feb 2015, 16:09

Ein Update: heute ist die Version 1.12 von pgfplots erschienen, die Nachricht vom CTAN-Newsticker kam vor ein paar Minuten.
Es ist Speicher-sparender und schneller, beispielsweise bei 3d-Plots.

Stefan

Ansatz einer nicht ganz kompletten Lösung

von Stamm- » So 1. Feb 2015, 14:52

Die Bibliothek grouplots von »pgfplots« ist hinsichtlich der Beschriftung einzelner Graphen schlecht geeignet. Es geht recht einfach mit einem Paket wie »subcaption« (Teil vom Bündel »caption«), mit dem so genannte "Unter-Abbildungen" möglich sind. Bezüglich der Gestaltung von Achsenbeschriftungen sind entsprechende Einstellungsmöglichkeiten in der Anleitung von »pgfplots« nachlesbar.
\documentclass[11pt,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{selinput}         % Ersatz für »inputenc«
\SelectInputMappings{         % Festlegung der Eingabe-Kodierung
  adieresis={ä},              % mit Hilfe ausgewählter Sonderzeichen
  germandbls={ß}              % siehe: http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
}
\usepackage{babel}
\usepackage[margin=2cm]{geometry}
\usepackage{subcaption}
\usepackage{pgfplots}

\pgfplotsset{
  compat=1.11,
  width=0.35\linewidth
}

\begin{document}
  \begin{figure}[!ht]
    \centering
    \subcaptionbox{Aluminium}{%
      \begin{tikzpicture}
        \begin{axis}[
          xmin=0,
          ymin=0,
          ymax=4.5,
          no markers,
          grid=both,
          grid style=dashed
        ]
          \addplot coordinates {(0,1) (1,2) (2,3)};
          \addplot coordinates {(0,0) (1,1) (2,2)};
        \draw (axis cs:0,0) circle (2);
        \end{axis}%
        \draw (2,0) arc [start angle=0, end angle=90, radius=2cm];
      \end{tikzpicture}%
    }
    \subcaptionbox{Titan}{%
      \begin{tikzpicture}
        \begin{axis}[
          xmin=0,
          ymin=0,
          ymax=4.5,
          no markers,
          grid=both,
          grid style=dashed
        ]
          \addplot coordinates {(0,1) (1,2) (2,3)};
          \addplot coordinates {(0,0) (1,1) (2,2)};
        \end{axis}
      \end{tikzpicture}%
    }
    \subcaptionbox{Edelstahl}{%
      \begin{tikzpicture}
        \begin{axis}[
          xmin=0,
          ymin=0,
          ymax=4.5,
          no markers,
          grid=both,
          grid style=dashed
        ]
          \addplot coordinates {(0,1) (1,2) (2,3)};
          \addplot coordinates {(0,0) (1,1) (2,2)};
          \legend{\(\sigma_r\),  \(\sigma_\phi\)}
        \end{axis}
      \end{tikzpicture}%
    }
    \caption{Spannungsverlauf über den Radius $r$}
    \label{fig:spannung-r}
  \end{figure}
\end{document}
Was die Kreisbögen innerhalb der Diagramme angeht, gibt es zwei Möglichkeiten. Man kann außerhalb der Umgebung axis einen Bogen von 0° bis 90° zeichnen oder innerhalb einen kompletten Kreis, der dann nur im Koordinatensystem zu sehen ist. Beides habe ich mal für das erste Diagramm gemacht. Daran ist sofort zu erkennen, dass der Kreis innerhalb des Koordinatensystems nur dann die gewohnte Form erhält, wenn die Skalierung beider Achsen entsprechend angepasst ist. Sonst entsteht eine Ellipse. Eine solche könnte man innerhalb des Koordinatensystems auch zeichnen, wenn man sich die passenden Radien der Halbachsen selbst ausrechnet.

Die Breite der Diagramme ist hier global im Vorspann mit \pgfplotsset eingestellt worden. Lässt man sie weg, werden die Diagramme bei Übergröße automatisch auf mehrere Zeilen verteilt. Die "Unter-Abbildungen" werden mit dem Befehl \subcaptionbox erzeugt. Sie können alternativ auch mit der Umgebung subfigure und die Beschriftung dann mit dem bekannten Befehl \caption erstellt werden. Details dazu sind in der anleitung von »subcaption« zu finden.


Anmerkungen:
  • An deinem Beispiel ist zu sehen, dass Du die Version 1.5 von »pgfplots« benutzt. Version 1.11 ist die aktuelle. Somit ist deren Aktualisierung eine Überlegung wert.

[pgfplots] Einfügen von Beschriftung in Gruppierung

von feidel » Sa 31. Jan 2015, 22:00

Hallo,

ich habe ein kleines Problem. Ich kriege keine Beschriftung unterhalb meiner Plots hin...

Ich habe es zuerst mit 3 unterschiedlichen Bildern versucht und es dann mit dem subfigure Paket angeordnet, das sieht schon mal so aus wie ich es möchte. Mir gefallen aber die Plots nicht, da es zu viel doppelte Information gibt.

Bild

Ich habe das erstmal Nachbearbeitet, damit die Plots besser aussehen.

Bild

Jetzt hätte ich aber gerne die Beschriftungen unter jedem Diagramm wie in dem ersten Bild.

Kriege es leider nicht hin... hier ein Minimalbeispiel, wie ich es aktuell gemacht habe:
\documentclass[tikz,border=2pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat=1.5}
\usepackage{graphicx}
\usepackage{lmodern}

\usepgfplotslibrary{groupplots}
\usetikzlibrary{pgfplots.groupplots}


\begin{document}
\centering
	\begin{tikzpicture}[smooth]
		\begin{groupplot}[group style={group size=3 by 1,horizontal sep=6pt}, xmin=0, ymin=0, ymax=4.5,no markers, grid=both, grid style=dashed]
			\nextgroupplot[ylabel={Spannung \(\sigma\) [MPa]}]
				\addplot coordinates {(0,1) (1,2) (2,3)};
				\addplot coordinates {(0,0) (1,1) (2,2)};
			\nextgroupplot[yticklabel=\empty, xlabel={Radius \(r\) [mm]}]
				\addplot coordinates {(0,1) (1,2) (2,3)};
				\addplot coordinates {(0,0) (1,1) (2,2)};
			\nextgroupplot[yticklabel pos=right]
				\addplot coordinates {(0,1) (1,2) (2,3)};
				\addplot coordinates {(0,0) (1,1) (2,2)};
				\legend{\(\sigma_r\),  \(\sigma_\phi\)}			
		\end{groupplot}
	\end{tikzpicture}
\end{document}

Und noch ein kleines Extra... ich hätte gerne noch Viertelreise die vom Koordinatenursprung loslaufen mit dem Radius 20 und 217. Die sollen aber nicht außerhalb des Diagramms sichtbar sein, kriegt man das auch irgendwie hin?
Dateianhänge
vers_1.png
vers_1.png (30.73 KiB) 4839 mal betrachtet
vers_2.png
vers_2.png (17.89 KiB) 4864 mal betrachtet

Nach oben