Hallo zusammen,

ich würde gerne ein Diagramm erstellen, das aus zwei Grafiken besteht. Der obere Teil soll bspw. den kompletten Graphen darstellen, während der untere Teil nur einen Ausschnitt des oberen Grafen darstellt. Dies soll mit einer Art Zoom-Funktion gemacht werden. Ich hab das auch soweit hinbekommen, allerdings alles manuell ausgerichtet und das ist wie immer etwas umständlich. Außerdem gelingt es mir nicht, für die obere Abbildung noch einen Titel einzufügen (über subfloat) ohne dass alles wieder verzogen wird. Am folgenden MB kann man - glaube ich - ganz gut nachvollziehen, was ich meine. Vielen Dank schonmal für die Hilfe.

Open in writeLaTeX
\documentclass{scrartcl}

\usepackage{subfig}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepackage{tikz}
\usepackage{filecontents}

\begin{filecontents}{datensuperfein.dat}
x            y
 0.00        1.0000   
 0.01        0.9831   
 0.02        0.9599   
 0.03        0.9719   
 0.04        0.9572   
 0.05        0.9283   
 0.06        1.0090   
 0.07        1.0142   
 0.08        1.0345   
 0.09        0.9303   
 0.10        0.9502   
 0.11        0.9220   
 0.12        0.8955   
 0.13        0.9415   
 0.14        0.9763   
 0.15        0.9202   
 0.16        0.9131   
 0.17        0.9028   
 0.18        0.9331   
 0.19        0.9301   
 0.20        0.9100   
 0.21        0.9817   
 0.22        0.9715   
 0.23        0.9758   
 0.24        1.0254   
 0.25        0.9807   
 0.26        1.0211   
 0.27        1.0374   
 0.28        1.0357   
 0.29        1.0789   
 0.30        1.1140   
 0.31        1.1735   
 0.32        1.1788   
 0.33        1.2679   
 0.34        1.2515   
 0.35        1.1390   
 0.36        1.0966   
 0.37        1.1250   
 0.38        1.1485   
 0.39        1.1710   
 0.40        1.1265   
 0.41        1.0565   
 0.42        1.1200   
 0.43        1.1349   
 0.44        1.1892   
 0.45        1.1238   
 0.46        1.1619   
 0.47        1.2652   
 0.48        1.2351   
 0.49        1.2125   
 0.50        1.1996   
 0.51        1.1542   
 0.52        1.1157   
 0.53        1.0923   
 0.54        1.1220   
 0.55        1.1387   
 0.56        1.1127   
 0.57        1.1711   
 0.58        1.2192   
 0.59        1.2971   
 0.60        1.3228   
 0.61        1.4058   
 0.62        1.3516   
 0.63        1.3132   
 0.64        1.3098   
 0.65        1.2550   
 0.66        1.2503   
 0.67        1.2592   
 0.68        1.1778   
 0.69        1.1043   
 0.70        1.0602   
 0.71        1.1036   
 0.72        1.1313   
 0.73        1.0859   
 0.74        1.1260   
 0.75        1.0937   
 0.76        0.9938   
 0.77        0.9589   
 0.78        0.9889   
 0.79        0.9515   
 0.80        0.9872   
 0.81        0.9859   
 0.82        1.0067   
 0.83        0.9849   
 0.84        0.9412   
 0.85        0.9415   
 0.86        0.9258   
 0.87        0.9544   
 0.88        0.9903   
 0.89        0.9589   
 0.90        0.9729   
 0.91        0.9543   
 0.92        0.8858   
 0.93        0.9268   
 0.94        0.9463   
 0.95        0.9803   
 0.96        0.9982   
 0.97        0.9428   
 0.98        0.9336   
 0.99        0.9416   
 1.00        0.9324   
 1.01        0.9782   
 1.02        1.0257   
 1.03        0.9994   
 1.04        0.9309   
 1.05        0.9431   
 1.06        0.9078   
 1.07        0.8936   
 1.08        0.9638   
 1.09        0.9270   
 1.10        0.9361   
 1.11        0.8893   
 1.12        0.8487   
 1.13        0.8415   
 1.14        0.8325   
 1.15        0.7928   
 1.16        0.8982   
 1.17        0.9208   
 1.18        0.9031   
 1.19        0.9394   
 1.20        0.9780   
 1.21        1.0201   
 1.22        1.0388   
 1.23        1.0099   
 1.24        0.9598   
 1.25        0.9257   
 1.26        0.9259   
 1.27        0.9213   
 1.28        0.9666   
 1.29        1.0795   
 1.30        1.1582   
 1.31        1.1078   
 1.32        1.0769   
 1.33        1.0417   
 1.34        1.0789   
 1.35        1.1413   
 1.36        1.1312   
 1.37        1.1485   
 1.38        1.2122   
 1.39        1.1624   
 1.40        1.2181   
 1.41        1.2310   
 1.42        1.2454   
 1.43        1.2008   
 1.44        1.2247   
 1.45        1.2429   
 1.46        1.1973   
 1.47        1.1584   
 1.48        1.1977   
 1.49        1.1041   
 1.50        1.0637   
 1.51        1.0773   
 1.52        1.0605   
 1.53        1.1444   
 1.54        1.1594   
 1.55        1.1598   
 1.56        1.1760   
 1.57        1.1663   
 1.58        1.0802   
 1.59        1.0731   
 1.60        1.1131   
 1.61        1.1944   
 1.62        1.1829   
 1.63        1.1575   
 1.64        1.1597   
 1.65        1.1566   
 1.66        1.2054   
 1.67        1.1908   
 1.68        1.2405   
 1.69        1.2164   
 1.70        1.1820   
 1.71        1.2174   
 1.72        1.1512   
 1.73        1.1111   
 1.74        1.0675   
 1.75        1.0242   
 1.76        1.0884   
 1.77        1.0611   
 1.78        1.0906   
 1.79        1.1480   
 1.80        1.0936   
 1.81        1.0853   
 1.82        1.1657   
 1.83        1.1658   
 1.84        1.2159   
 1.85        1.0777   
 1.86        1.1777   
 1.87        1.2206   
 1.88        1.1620   
 1.89        1.1863   
 1.90        1.2497   
 1.91        1.2834   
 1.92        1.3511   
 1.93        1.3368   
 1.94        1.2692   
 1.95        1.2340   
 1.96        1.2745   
 1.97        1.3312   
 1.98        1.4111   
 1.99        1.4702   
 2.00        1.4199   
\end{filecontents}

\begin{document}

\begin{figure}
\centering
\subfloat{ % hier einen Titel einfügen, klappt nicht.
\begin{tikzpicture}
\begin{axis}[
width=0.45\textwidth,
height=0.3\textheight,
xlabel=x,
ylabel=y,
clip=false,
ymin=0,
ymax=2,
xmin=0,
xmax=2,
yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},
]
\addplot [no markers,]table [x=x,y=y] {datensuperfein.dat};
\draw (axis cs:0.5,0.7)--(axis cs:0,-2);
\draw (axis cs:1,0.7)--(axis cs:2,-2);
\draw (axis cs:0.5,0.7)--(axis cs:1,0.7)--(axis cs:1,1.5)--(axis cs:0.5,1.5) -- cycle;
\end{axis}
\end{tikzpicture}
}\\[-0.05cm]
\subfloat[Zweite Teilabbildung]{
\begin{tikzpicture}
\begin{axis}[
width=0.45\textwidth,
height=0.3\textheight,
xlabel=x,
ylabel=y,
restrict x to domain=0.5:1.0;
xmin=0.5,
xmax=1,
ymin=0.8,
ymax=1.5,
yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},
]
\addplot [no markers,]table [x=x,y=y] {datensuperfein.dat};
\end{axis}
\end{tikzpicture}
}
\end{figure}

\end{document}

alt text

gefragt 23 Jun '14, 19:01

josephine's gravatar image

josephine
944223035
Akzeptiert-Rate: 0%

bearbeitet 23 Jun '14, 22:25

Ist das der echte Graph, oder sieht er eigentlich anders aus? Mit einer realen Funktion, wo man auch einen Effekt des Vergrößerns sieht, macht eine Lösung mehr Spaß! Ich arbeite auch gern mit pgfplots. Ich würde es dann mit pin machen.

(23 Jun '14, 19:52) stefan ♦♦

@stefan, ich habe den Graphen ein wenig angepasst. Jetzt sieht man den Zoom Effekt auch besser. Wie genau würdest du in dem Fall dann mit pin arbeiten?

(23 Jun '14, 22:27) josephine

@josephine Da Elke schon eine sehr gute Lösung postete, hab ich nicht nochmal überlegt. Mit pin und zoom würde ich es analog hier machen: Weierstrass-Funktion.

(26 Jun '14, 14:16) stefan ♦♦

Für die Teilbeschriftungen würde ich das Paket subcaption verwenden. Dann kann man beide Teilabbildungen in eine gemeinsame tikzpicture Umgebung setzen, was die Verbindung zwischen beiden erleichtert. Die subcaption werden jeweils einfach in je einem node eingefügt, so dass sie frei platziert werden können. Wenn die Beschriftungen jeweils unter die Abbildungen sollen, dann erscheint es mir allerdings sinnvoller, den Ausschnitt rechts neben den kompletten Graphen zu setzen.

alt text

Code:

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\usepackage{subcaption}

\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}[
    ausschnitt/.style={blue!50!red}
  ]
    % Befehl für Teilbeschriftungen
    \newcommand\teilbeschriftung[1]{
      \node[below,text width=.45\textwidth] 
        at (current axis.outer south){\subcaption{#1}};
    }
    % Einstellungen für Achsen
    \pgfplotsset{
      myaxis/.style={
        width=.45\textwidth,
        height=0.3\textheight,
        xlabel=x,
        ylabel=y,
        yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},
      }
    }
    %
    \begin{axis}[
      myaxis,
      ymin=0,
      ymax=2,
      xmin=0,
      xmax=2,
    ]
    \addplot [no markers]table[x=x,y=y]{datensuperfein.dat};
    \draw[ausschnitt]
      (axis cs:0.5,0.7)coordinate(ul)--
      (axis cs:1,0.7)coordinate(ur)--
      (axis cs:1,1.5)coordinate(or)--
      (axis cs:0.5,1.5) -- cycle;
    \end{axis}
    \teilbeschriftung{Beschriftung 1}
    % Ausschnitt
    \begin{axis}[
      xshift=.5\textwidth,
      myaxis,
      axis line style=ausschnitt,
      xmin=0.5,
      xmax=1,
      ymin=0.8,ytickmin=.9,
      ymax=1.5,
    ]
    \addplot [no markers]table [x=x,y=y] {datensuperfein.dat};
    \end{axis}
    \teilbeschriftung{Beschriftung 2}
    % Verbindungslinien
    \draw[ausschnitt]
      (current axis.north west)--(or)
      (current axis.south west)--(ur);
  \end{tikzpicture}
  \caption{Beschriftung insgesamt}
\end{figure}
\end{document}

Die beiden Abbildungen untereinander würde dagegen so aussehen:

alt text

Dafür müsste in obigem Code beim Plot des Ausschnittes xshift=.5\textwidth durch yshift=-.35\textheight ersetzt werden. Da dann aber unter Umständen die Verbindungslinien über die obere Beschriftung gehen, würde man die Teilbeschriftungen vielleicht besser neben die Zeichnungen setzen.

Permanenter link

beantwortet 24 Jun '14, 12:26

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 24 Jun '14, 12:56

@esdd Danke Dir. Deine Lösung ist toll.

(27 Jun '14, 13:44) josephine
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×296
×6

gestellte Frage: 23 Jun '14, 19:01

Frage wurde gesehen: 12,123 Mal

zuletzt geändert: 27 Jun '14, 13:44