PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterbrochene Y Achse



grosdode
20-05-2015, 06:49
Hallo zusammen,
ich bin neu hier und hoffe mein Problem so zu Stellen das es verständlich ist.

Ich würde gerne die Y Achse eines Plots unterbrechen um sowohl einige hohe Werte als auch einige niedrige Werte hoch aufgelöst darstellen zu können. Hier wie der es bis jetzt aussieht:


\documentclass[12pt,a4paper]{article}

\usepackage{pgfplots}
\usepackage{tikz}
\usepackage[ngerman]{babel}

\begin{document}

\begin{figure} [H]
\centering
\begin{tikzpicture}
\begin{axis}[
xlabel= xlabel,
ylabel= ylabel,
width=\textwidth,
height=8cm,
xmin=25,
]
\addplot plot coordinates {
(25,27.568)
(30,27.464)
(40,27.264)
(50,27.083)
(55,26.989)
(60,26.909)
(70,26.736)
(80,26.577)
(85,26.499)};
\addplot plot coordinates {
(25,3.2246)
(55,3.1092)
(85,3.0165)};
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

und hier wie es aussehen sollte (Paint):
6129

Ich habe schon mal Google bemüht weiß aber nicht recht wie man diese "Unterbrechung" bezeichnet. Auf Englisch heißt es wohl break bzw. broken aber die wenigen Lösungen waren ein schlimmes gefrickel mit manuellen Ticks ....

grosdode
20-05-2015, 11:06
Keiner ne Idee?
ich hab's bis jetzt soweit:

\documentclass[12pt,a4paper]{article}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{pgfplots.groupplots}
\usepackage[ngerman]{babel}

\begin{document}

\begin{figure} [H]
\centering
\begin{tikzpicture}[scale=1.0]
\begin{groupplot}[
group style={
group size=1 by 2,
xticklabels at=edge bottom,
vertical sep=0pt
},
legend cell align=left,
legend pos=north east,
width=0.9\textwidth,
height = 4cm,
xmin=24, xmax= 86,
extra x ticks={25,85},
]

\nextgroupplot[ymin=25.8, ymax=27.7,
ytick={26.5,27,27.5},
axis x line=top,
height = 4.5cm,
axis y discontinuity=crunch,
]
\addplot[blue,mark=*] plot coordinates {
(25,27.568)
(30,27.464)
(40,27.264)
(50,27.083)
(55,26.989)
(60,26.909)
(70,26.736)
(80,26.577)
(85,26.499)};
\legend{Amber,Weiß}
\nextgroupplot[ymin=2.98,ymax=3.24,
axis x line=bottom,
ylabel=\qquad \qquad \qquad \qquad Vorwärtsspannung in V,
xlabel=Temperatur in °C,
height = 4cm,
]
\addplot[red,mark=triangle*,dashed] plot coordinates {
(25,3.2246)
(55,3.1092)
(85,3.0165)};
\legend{Weiß}
\end{groupplot}
\end{tikzpicture}
\label{polt:Auswertung_1_1_Amber}
\caption{Vorwärtsspannung zweier LED's in Abhängigkeit der Temperatur an dessen Rückseite.}
\end{figure}

\end{document}

aber schön finde ich das nicht außerdem ist das ylable nur in der Mitte weil ich viel Leerzeichen davor gepackt habe, an der X Achse sind Pfeile die ich eigentlich nicht möchte, die Plotunterschrift hat noch zu viel Leerraum (auch auf einer sonst vollen Seite) und ich bekomme die Graphen nicht in eine Legende

The EYE
20-05-2015, 11:09
Keiner ne Idee?
Dein Thread ist doch erst ein paar Stunden alt! Ich kann dir leider nicht bei deinem Problem helfen. EIn bisschen gedulden solltest du dich dennoch.

Gruß Max

nixversteh
20-05-2015, 14:11
Hallo grosdode,

versuche mal diesen Codeschnippel, den Rest hast du bereits..
%axis y discontinuity=crunch,
axis y discontinuity=parallel,

Viel Erfolg

Gruß

Martin

grosdode
20-05-2015, 15:40
Hallo nixversteh,
parallel hatte ich auch gefunden aber ich fand crunch ansprechender ;)
Aber danke für den Tipp gibt es noch mehr Möglichkeiten?

esdd
20-05-2015, 20:22
Die Pfeile an den x-Achsen bekommst Du weg, wenn Du axis x line* verwendest, also den Stern ergänzt. Die vielen Leerzeichen vor dem y Label verursachen auch den Leerraum unter der Zeichnung. Füge das y-Label einfach erst nach den Plots ein. Zum Ausrichten kannst Du innerhalb der Groupplots Koordinaten setzen. Die einzelnen Plots kannst Du mit \label speichern und hinterher die Legende von Hand einfügen.


\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{
pgfplots.groupplots,
matrix
}
\usepackage{siunitx}
\begin{document}

\begin{figure}[htb]
\centering
\begin{tikzpicture}
\begin{groupplot}[
group style={
group size=1 by 2,
xticklabels at=edge bottom,
vertical sep=0pt
},
legend cell align=left,
legend pos=north east,
width=0.9\textwidth,
height = 4cm,
xmin=24, xmax= 86,
extra x ticks={25,85},
]

\nextgroupplot[
ymin=25.8, ymax=27.7,
ytick={26.5,27,27.5},
axis x line*=top,
height = 4.5cm,
axis y discontinuity=crunch,
]
\addplot[blue,mark=*] plot coordinates {
(25,27.568)
(30,27.464)
(40,27.264)
(50,27.083)
(55,26.989)
(60,26.909)
(70,26.736)
(80,26.577)
(85,26.499)};\label{plots:plot1}
\coordinate (top) at (rel axis cs:0,1);
\nextgroupplot[
ymin=2.98,ymax=3.24,
axis x line*=bottom,
xlabel=Temperatur in \si{\degree}C,
height = 4cm,
]
\addplot[red,mark=triangle*,dashed] plot coordinates {
(25,3.2246)
(55,3.1092)
(85,3.0165)};\label{plots:plot2}
\coordinate (bot) at (rel axis cs:1,0);
\end{groupplot}
% y Label
\path (top-|current bounding box.west)--
node[anchor=south,rotate=90] {Vorwärtsspannung in V}
(bot-|current bounding box.west);
% Legende
\path (top|-current bounding box.north)--
coordinate(legendpos)
(bot|-current bounding box.north);
\matrix[
matrix of nodes,
anchor=south,
draw,
inner sep=0.2em,
draw
]at([yshift=1ex]legendpos)
{
\ref{plots:plot1}& Amber, Weiß&[5pt]
\ref{plots:plot2}& Weiß
\\};
\end{tikzpicture}
\label{polt:Auswertung_1_1_Amber}
\caption{Vorwärtsspannung zweier LED's in Abhängigkeit der Temperatur an dessen Rückseite.}
\end{figure}
\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=6130&d=1432149699

Gruß
Elke

grosdode
21-05-2015, 07:27
Hallo Elke,
vielen Dank das sieht ziemlich gut aus, auch wenn ich gestehen muss das ich deinen Ergänzungen kaum folgen kann ^^