\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{statistics}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ytick={1,2,3},
yticklabels={PT,RP-T,P-T},
% xticklabels={1,2,3,4,5,6,7,a},
]
\addplot+[
boxplot prepared={
median=-0.052077,
upper quartile=1.627744,
lower quartile=-1.613357,
upper whisker=9.878565,
lower whisker=-8.484539
},
] coordinates {};
\addplot+[
boxplot prepared={
median=0.893359,
upper quartile=32.047894,
lower quartile=-29.725945,
upper whisker=219.879028,
lower whisker=-242.360413
},
] coordinates {};
\addplot+[
boxplot prepared={
median=357.228912,
upper quartile=32866.879883,
lower quartile=-31571.360840,
upper whisker=149471.640625,
lower whisker=-147415.8125
},
] coordinates {};
\end{axis}
\end{tikzpicture}
\end{document}
Ich möchte es Ihnen für jeden Datenbereich gut zeigen, aber die Lücke zwischen den einzelnen Datenbereichen ist so groß, dass die beiden Boxplots gerade so zusammenhängend aussehen. Ich habe versucht, den Datenbereich zu reduzieren und ihn durch eine Exponentialnotation auf der Skala zu ersetzen, aber das war umständlich, weil der Bereich der darzustellenden Diagramme eng ist. Gibt es eine gute Möglichkeit für mich?
Antwort1
WeilSie können hier nicht auf logarithmische Skala umschalten, ich schlage vor, eine Art geteilte Zeichnung zu machen, wie unten gezeigt. Bemerkungen:
- kopierte deine monolithische Achse in 3 einzelne
- setzen Sie jeweils insie ein
scope
, zB für Platzierung - jedem eine Breite und Höhe zugewiesen
- Fügen Sie einige Linien/Pfeile ein, um eine Art Vergrößerung anzuzeigen
Es gibtFür ein schönes Bild sind noch einige Aufgaben zu erledigen:
- Wählen Sie bessere Min/Max-Werte, sodass alle "0" zentriert ausgerichtet werden
- Finden Sie einen Weg, jedem Bereich globale Namen zuzuweisen, um das Zeichnen zu vereinfachen, z. B. wie
\draw (A.south) -- (B.north west);
, wobei (A) der erste und (B) der zweite Bereich ist
Letzter Vorschlag: Erstellen Sie diese Zeichnung in einer standalone
Klasse UND verwenden Sie das Paket graphicx
, um das PDF als Bild in die Dokumentklasse Ihrer Wahl einzubinden.
\documentclass{article}
%\usepackage{graphicx} % Required for inserting images
%\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{statistics}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[
>={Stealth},
ind/.style={->, teal!50},
]
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{scope}
\begin{axis}
[
ytick={1},
yticklabels={PT},
% xticklabels={1,2,3,4,5,6,7,a},
height=4cm, width=10cm,
]
\addplot+[
boxplot prepared={
median=357.228912,
upper quartile=32866.879883,
lower quartile=-31571.360840,
upper whisker=149471.640625,
lower whisker=-147415.8125
},
] coordinates {};
\end{axis}
\end{scope}
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{scope}[yshift=-4cm]
\begin{axis}
[
ytick={1},
yticklabels={RP-T},
% xticklabels={1,2,3,4,5,6,7,a},
height=4cm, width=10cm,
]
\addplot+[
boxplot prepared={
median=0.893359,
upper quartile=32.047894,
lower quartile=-29.725945,
upper whisker=219.879028,
lower whisker=-242.360413
},
] coordinates {};
\end{axis}
\end{scope}
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{scope}[yshift=-8cm]
\begin{axis}
[
ytick={1},
yticklabels={P-T},
% xticklabels={1,2,3,4,5,6,7,a},
height=4cm, width=10cm,
]
\addplot+[
boxplot prepared={
median=-0.052077,
upper quartile=1.627744,
lower quartile=-1.613357,
upper whisker=9.878565,
lower whisker=-8.484539
},
] coordinates {};
\end{axis}
\end{scope}
% ~~~ drawing some lines ~~~~~~~~~~~~
\draw[ind] (4.2,- .5) -- (0,-1.5);
\draw[ind] (4.2,-4.5) -- (0,-5.5);
\draw[ind] (4.3,- .5) -- (8.5,-1.5);
\draw[ind] (4.5,-4.5) -- (8.5,-5.5);
\end{tikzpicture}
\end{document}