Seite 1 von 1

Inset in einem Graphen mit pgfplots

Verfasst: Do 1. Sep 2011, 14:29
von speschlll
Hallo zusammen,
ich versuche gerade in einem Graphen, den ich mit pgfplots erstellt habe, ein kleines Inset einzufügen. Im Grunde soll ein Bereich meiner Kurve vergrößert im noch vorhandenen Freiraum des Graphen dargestellt werden.
Hier bietet sich natürlich Tikz-spy an. Hier wird zwar der ausgewählte Bereich vergrößert, aber leider fehlt dem Kasten in der vergrößerten Darstellung dann die Achseneinteilung zB auf der x-Achse.
Ich habe selber versucht einfach zwei Graphen in der selben tikzpicture-Umgebung zu erstellen und wollte dann den kleineren "einfach" verschieben, was mir aber nicht gelungen ist, weil es doch anscheindend nicht so "einfach" ist ;)
Hat hier vllt jemand eine gute Idee, wie man dieses Problem lösen kann?

Vielen Dank schonmal im Voraus,
speschlll
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{units}

\begin{document}
\begin{figure}[b]
\centering
\begin{tikzpicture}
\begin{axis}[
width=\columnwidth,
height=0.3\textheight,
ytick=\empty,
xlabel = Raman Shift,
x unit = cm^{-1},
ylabel = Intensity,
y unit = arb. units,
minor tick num = 3,
xmin=1250, xmax=2800,
ymin=0, ymax=2400,
]
		\addplot[smooth,thick,color=blue]  table {data/532_U44-5_2070.txt};
		
\end{axis}

\begin{axis}[
width=0.5\columnwidth,
height=0.15\textheight,
ytick=\empty,
minor tick num = 3,
xmin=1275, xmax=1500,
ymin=100, ymax=400,
]
		\addplot[smooth,thick,color=blue]  table {data/532_U44-5_2070.txt};	
\end{axis}	

\end{tikzpicture}
\vspace{-10pt}

\caption{}%
\label{}%
\end{figure}
\end{document}

Datensatz erforderlich

Verfasst: Do 1. Sep 2011, 17:41
von localghost
Lade doch mal den entsprechenden Datensatz (532_U44-5_2070.txt) für dein Raman-Spektrum hier hoch.


Thorsten

Verfasst: Fr 2. Sep 2011, 10:38
von speschlll
Moin moin,
ich hab nochmal kurz (mit Paint) ein Bildchen gemalt, um zu verdeutlichen was ich meine.
Im Grunde brauche ich also so etwas wie die spy-library, aber mit Achseneinteilung an dem Kästchen, was den vergrößerten Bereich darstellt.

Gruß,
speschlll

Verfasst: Fr 2. Sep 2011, 19:46
von speschlll
Ok, ich hab die Lösung selber gefunden.
Hab's erst noch mit der overpic-Umgebung probiert aber das funktionierte nicht, schlussendlich hat es jetzt der simple "\put"-Befehl getan ^^

Alternative mit Bordmitteln

Verfasst: Fr 2. Sep 2011, 20:46
von localghost
Mal ganz davon abgesehen, das deine Lösung ziemlich halbgar erscheint, solltest Du sie hier dennoch vollständig angeben. Du schreibst hier ja nicht nur für dich, sondern auch für andere, die möglicherweise das gleiche oder ein ähnliches Problem haben.

Eigentlich bietet pgf/tikZ Möglichkeiten, um das Problem mit dessen Mitteln zu lösen.
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{units}
\usepackage{siunitx}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[%
      width=\linewidth,
      height=0.3\textheight,
      ytick=\empty,
      xlabel={Raman Shift},
      ylabel={Intensity},
      xlabel near ticks,
      ylabel near ticks,
      x unit={\si{\per\cm}},
      y unit={arb. units},
      minor tick num=3,
      xmin=1250,xmax=2800,
      ymin=0,ymax=2400,
    ]
      \addplot[smooth,thick,color=blue]  table {532_U44-5_2070.txt};
    \end{axis}
    \begin{scope}[shift={(3.5,2.5)},font=\scriptsize]
      \begin{axis}[%
        width=0.5\linewidth,
        height=0.15\textheight,
        ytick=\empty,
        minor tick num=3,
        xmin=1275,xmax=1500,
        ymin=200,ymax=400,
      ]
        \addplot[smooth,thick,color=blue]  table {532_U44-5_2070.txt};  
      \end{axis}  
    \end{scope}
  \end{tikzpicture}
\end{document} 
Etwas anderes fällt mir zur Zeit dazu nicht ein.