2 pgf-Diagramme auf eine Seite - Probleme

Tabellen und Grafiken erstellen und anordnen


sippi
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Fr 13. Jul 2012, 17:15

2 pgf-Diagramme auf eine Seite - Probleme

Beitrag von sippi »

Hallo ihr,

ich möchte mittels pgfplots zwei Diagramme untereinander plotten.
Diese Diagramme sollen als ein Bild auf einer Seite dargestellt werden.

Das habe ich schon gelöst, siehe Minimalbeispiel/Fehlererklärung.
Allerdings gibt es mit meiner Lösung noch kleine Probleme, die ich mir nicht erklären kann.

Ich habe die Problemfälle im angehängten Bild farbig markiert.


1. Die Einheit der x-Achse des oberen Diagramms ist auf mysteriöse Art und Weise an total falscher Stelle. Wie krieg ich die an die richtige Stelle? (ROT)

2. Die Legenden der Diagramme sind aufgrund ihrer Größe denkbar ungünstig platziert. Wie kann ich die weiter nach rechts verschieben, evtl. mit absoluten Platzierungsangaben? (VIOLETT)

3. Das obere Diagramm ist eigentlich das untere! Wieso werden die vertauscht? (BLAU)

4. Kann man den Abstand der Anfangswerte der beiden Achsen erhöhen? Speziell bei unterem Diagramm überschneiden sich die 0 und 4700 fast.
Ich denke ich habe irgendwo gelesen, dass man diesbezüglich den Abstand der beiden Achsen vergrößern kann..? (BRAUN)

5. Kann man die Länge der zusätzlichen Linie bei 5000 bestimmen oder geht die immer bis an den obersten Rand des Diagramms? (GELB)

6. Kann man den Abstand des letzten Punkts einer Achse vereinheitlichen, sprich überall gleich groß? (GRÜN)

Es würde mir schon beachtlich helfen, wenn einige Probleme gelöst werden könnten.
Die Probleme sind nach ihrer Wichtigkeit aufsteigend geordnet ;)!


Vielen Dank schonmal im Voraus!
Dateianhänge
Fehlererklärung
Fehlererklärung
untitled.JPG (65.38 KiB) 2163 mal betrachtet
bug.tex
Minimalbeispiel
(3.02 KiB) 789-mal heruntergeladen

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

Beitrag von esdd »

Hallo,

hier sind ein paar Vorschläge, die vielleicht weiterhelfen:

3. (blau): du gibst für das zweite Diagramm yshift=9cm an und verschiebst es damit nach oben. Soll es unter dem ersten stehen muss es yshift=-9cm heißen.

1. (rot): lass die scope weg und schreib yshift=-9cm zu den Optionen der axis Umgebung und/oder verwende für die Positionierung der x-Achseneinheit das "axis description cs"

2. (violett): mit dem"axis description cs" kannst du auch die Legenden positionieren

5. (gelb): verwende major tick length=<länge> statt grid=major für den x tick label style
\documentclass{scrreprt}

\usepackage{pgfplots}
\pgfplotsset{compat=1.6}
\pgfmathdeclarefunction{gauss}{2}{\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}}

\usepackage{siunitx}

\begin{document}

\begin{figure}[H]
  \centering
  \begin{tikzpicture}
    \begin{axis}[
      height=10cm,
      xmin=4700,xmax=5300,
      ymin=0,ymax=0.008,
      samples=50,smooth,
      xtick={4800,4900,...,5300},
      yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/precision=4
      },
      every axis x label/.style={
        at={(1,0)},anchor=north west},
      xlabel=\si{\micro\second},
      extra x ticks={5000},
      x tick label style={/pgf/number format/1000 sep=},
      extra x tick style={
        major tick length=4.8cm,
        dashed,very thick,
        tick label style={yshift=5cm}
      },
      axis x line*=bottom,axis y line*=left,
      enlargelimits=upper,
      legend style={at={(1.1,0.9)},anchor=north east}]
        \addplot[domain=4700:5300, mark=none, dotted, very thick] {gauss(4999.917,52.785)};
        \addplot[domain=4700:5300, mark=none, dashed, very thick] {gauss(4999.983,98.974)};
        \addplot[domain=4700:5300, mark=none, very thick] {gauss(4999.983, 104.614)};
        \legend{$\sigma=\num{31.223}$ $\mu=\num{4999.893}$, $\sigma=\num{82.197}$ $\mu=\num{4999.645}$, $\sigma=\num{36.276}$ $\mu=\num{4999.932}$}
    \end{axis}
    \begin{axis}[yshift=-9cm,
      height=10cm,
      xmin=3300,xmax=6700,
      ymin=0,ymax=0.0025,
      samples=50,smooth,
      xtick={3500,4000,...,6500},
      yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/precision=5
      },
      every axis x label/.style={
        at={(1,0)},anchor=north west},
      xlabel=\si{\micro\second},
      extra x ticks={5000},
      x tick label style={/pgf/number format/1000 sep=},
      extra x tick style={
        major tick length=4.8cm,
        dashed,very thick,
        tick label style={yshift=5cm}
      },
      axis x line*=bottom,axis y line*=left,
      enlargelimits=upper,
      legend style={at={(1.1,0.9)},anchor=north east}]
        \addplot[domain=3300:6700, mark=none, dotted, very thick] {gauss(5000.312,159.984)};
        \addplot[domain=3300:6700, mark=none, dashed, very thick] {gauss(5000.884,272.425)};
        \addplot[domain=3300:6700, mark=none, very thick] {gauss(5003.129,629.461)};
        \legend{$\sigma=\num{31.223}$ $\mu=\num{4999.893}$, $\sigma=\num{82.197}$ $\mu=\num{4999.645}$, $\sigma=\num{36.276}$ $\mu=\num{4999.932}$}
    \end{axis}
  \end{tikzpicture}
  \caption{bla}
  \label{fig:bla}
\end{figure}

\end{document}
Gruß
Elke

sippi
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Fr 13. Jul 2012, 17:15

Beitrag von sippi »

Perfekt. Alle Probleme gelöst.

Vielen Dank, das erspart mir Stunden an suchen im "kurzen" pgf manual :D.

Noch drei abschließende Fragen.

Ist es möglich für jeden extra tick der x-Achse einen anderen Linienstil zu wählen?
Ich möchte prinzipiell Intervalle zu den Verteilungen kennzeichnen, und diese sollten folglich den gleichen Linienstil besitzen wie die zugehörige Verteilung.

Als extra x tick label wird jetzt der Wert angezeigt, kann man diesen auch individuell festlegen?

In Kombination mit den extra x ticks: Kann man einen horizontalen Pfeil einfügen, der das Intervall zwei Markierungen kennzeichnet?
Ich würde da jetzt stumpf mit \draw (x,y) -- (x,y) loslegen, aber das hat dann ja keinen Zusammenhang mehr mit dem eigentlichen Diagramm...


Vielen Dank nochmal!

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

Beitrag von esdd »

Hallo,

ob man für die einzelnen extra x ticks verschiedene Linienstile wählen kann, weiß ich nicht.

Die Beschriftung des extra x tick labels kann man mit extra x tick label=... festlegen.

Hier ist einfach noch ein Beispiel mit ein paar zusätzlichen Linien:
\documentclass{scrreprt}

\usepackage{pgfplots}
\pgfplotsset{compat=1.6}
\pgfmathdeclarefunction{gauss}{2}{\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}}

\usepackage{siunitx}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    height=10cm,
    xmin=4700,xmax=5300,
    ymin=0,ymax=0.008,
    samples=50,smooth,
    xtick={4800,4900,...,5300},
    yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4},
    every axis x label/.style={
      at={(1,0)},anchor=north west},
    xlabel=\si{\micro\second},
    extra x ticks={5000},
    extra x tick label=text1,
    extra x tick style={
      major tick length=4.8cm,
      dashed,very thick,
      tick label style={yshift=5cm}
    },
    axis x line*=bottom,axis y line*=left,
    enlargelimits=upper,
    legend style={at={(1.1,0.9)},anchor=north east}]
      \addplot[domain=4700:5300, mark=none, dotted, very thick] {gauss(4999.917,52.785)};
      \addplot[domain=4700:5300, mark=none, dashed, very thick] {gauss(4999.983,98.974)};
      \addplot[domain=4700:5300, mark=none, very thick] {gauss(4999.983, 104.614)};
      \draw[dotted, very thick,blue](axis cs:5200,0)--+(0,5cm)node[above]{text2};
      \draw[red,<->,very thick](axis cs:4800,0.004)--(axis cs:4900,0.004);
      \legend{$\sigma=\num{31.223}$ $\mu=\num{4999.893}$, $\sigma=\num{82.197}$ $\mu=\num{4999.645}$, $\sigma=\num{36.276}$ $\mu=\num{4999.932}$}
  \end{axis}
\end{tikzpicture}

\end{document}
Gruß
Elke

sippi
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Fr 13. Jul 2012, 17:15

Beitrag von sippi »

Hallo Elke,

vielen lieben Dank nochmal! Du hast mir riesig geholfen.
Das ganze tikz/pgf Thema ist zwar sehr interessant, aber man könnte da auch Stunden drin versenken...

Speziell Deine letzte Lösung war so allgemein gehalten, dass ich meine angestrebten Ziele nun verwirklichen konnte.


Für zukünftige Suchende anbei meine fertige Lösung :).
Dateianhänge
solution.tex
(3.68 KiB) 744-mal heruntergeladen

Antworten