
Ich bin derzeit ratlos, wie ich vorgehen soll, um einen X-Achsen-Bruch für mein Boxplot zu erhalten. Aus den leicht verwandten tex.stackexchange-Beiträgen gehe ich davon aus, dass dies mit einem Gruppenplot möglich sein sollte, aber mein Boxplot wird nicht angezeigt, wenn ich meinen Code von der Achse auf das Gruppenplot umstelle.
Um zu veranschaulichen, was ich erreichen möchte:
Irgendwelche Ratschläge hierzu?
Funktionierender Code ohne Break und Groupplot:
\documentclass{minimal}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ytick=\empty,
xmin=0, xmax=4500,
xtick={0,500,1000,2500,4500},
axis x line=bottom,
axis line style={-},
axis y line=none,
enlargelimits=0.05,
height=4.0cm, width=14.0cm,
]
\addplot+[
boxplot prepared={
upper quartile=650,
lower quartile=30,
upper whisker=1400,
lower whisker=0,
median=80
},black,
] coordinates {
(0,2100)
(0,2300)
(0,2900)
(0,3400)
(0,3700)
(0,4200)
};
\end{axis}
\end{tikzpicture}
\end{document}
Nicht funktionierender Code für Boxplot mit Unterbrechung der X-Achse:
\documentclass{minimal}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group name=my fancy plots,
group size=2 by 1,
axis line style={-},
ytick=\empty,
},
width=14cm,
]
\nextgroupplot[
xtick={0,1000,2000,3000},
axis x discontinuity=parallel,
axis x line=bottom,
width=10cm]
\addplot[
boxplot prepared={
upper quartile=650,
lower quartile=30,
upper whisker=1400,
lower whisker=0,
median=80
},black,
] coordinates {
(0,2100)
(0,2300)
(0,2900)
(0,3400)
(0,3700)
(0,4200)
};
\nextgroupplot[xmin=9500,xmax=9750,
xtick={9500,9750},
axis x line=bottom,
width=2.0cm]
\addplot coordinates {(0,9600)};
\end{groupplot}
\end{tikzpicture}
\end{document}
Danke!
Bearbeiten:
Funktionierender Code zur zukünftigen Bezugnahme:
\documentclass{minimal}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group name=my fancy plots,
group size=2 by 1,
horizontal sep=3pt % added
},
% the following are added
scale only axis,
height=3cm,
ymin=0.5,ymax=1.5,
axis y line=none,
axis x line=bottom,
]
\nextgroupplot[
xmin=-100,
ymin=0.5,ymax=1.5,
xtick={0,1000,2000,3000},
width=10cm,
x axis line style={-{Bar[width=15pt]}}
]
\addplot[
mark = x , mark options = {mark color=black},
boxplot prepared={
upper quartile=650,
lower quartile=30,
upper whisker=1400,
lower whisker=0,
median=80
},black,
] coordinates {
(0,2100)
(0,2300)
(0,2900)
(0,3400)
(0,3700)
(0,4200)
};
\nextgroupplot[xmin=9300,xmax=9900,
xtick={9500,9750},
width=2.0cm,
x axis line style={{Bar[width=15pt]}-}
]
\addplot [
mark = x, mark options = {mark color=black}]
coordinates {(9600, 1)};
\end{groupplot}
\end{tikzpicture}
\end{document}
Antwort1
Das erste, was in Ihrem Beispiel fehlt, ist \usepgfplotslibrary{groupplots, statistics}
, aber ich nehme an, dass Sie diese in Ihrem eigentlichen Dokument haben.
In Ihrem Code sind einige Dinge falsch.
Gemeinsame Optionen für die Achsen in einem Gruppendiagramm gehen nicht innerhalb
group style
, sondern außerhalb. Daheraxis line style={-}, ytick=\empty
muss verschoben werden.Sie legen nur die Breite der Achse fest, aber das Seitenverhältnis bleibt konstant, wenn Sie nicht auch die Höhe festlegen. Bedenken Sie auch, dass die Breite und Höhe einer Achse standardmäßig auf 45pt weniger als die angegebenen Längen eingestellt werden, um Platz für Achsenbeschriftungen zu schaffen. Fügen Sie hinzu,
scale only axis
damit die Längen auf das Achsenfeld selbst angewendet werden, da eine 2 cm breite Achse sonst ziemlich klein wird.Im Koordinatendiagramm hast du in der zweiten Achse die x- und y-Werte vertauscht.
Ein
axis discontinuity
wird immer am Anfang der Achsenlinie platziert, aber da Sie sie in zwei Achsen aufgeteilt haben, brauchen Sie das nicht. Stattdessen habe ich den Pfeiltyp für die Achsenlinien mit zB geändert,x axis line style={-|}
um die Linien hinzuzufügen. (Oder hinzufügen\usetikzlibrary{arrows.meta}
und verwenden,x axis line style={-{Bar[width=15pt]}}
um einen längeren Balken zu erhalten.)
Ich glaube, ich habe auch einige andere Anpassungen vorgenommen, das waren meiner Meinung nach die wichtigsten Dinge.
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots, statistics}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group name=my fancy plots,
group size=2 by 1,
horizontal sep=3pt % added
},
% the following are added
scale only axis,
height=3cm,
ymin=0.5,ymax=1.5,
axis y line=none,
axis x line=bottom,
]
\nextgroupplot[
xmin=-100,
xtick={0,1000,2000,3000},
width=10cm,
x axis line style={-{Bar[width=15pt]}}
]
\addplot[
boxplot prepared={
upper quartile=650,
lower quartile=30,
upper whisker=1400,
lower whisker=0,
median=80
},black,
] coordinates {
(0,2100)
(0,2300)
(0,2900)
(0,3400)
(0,3700)
(0,4200)
};
\nextgroupplot[xmin=9350,xmax=9900,
xtick={9500,9750},
width=2.0cm,
x axis line style={{Bar[width=15pt]}-}
]
\addplot coordinates {(9600, 1)};
\end{groupplot}
\end{tikzpicture}
\end{document}