\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}
データ範囲ごとにうまく見せたいのですが、各データ範囲のギャップが大きすぎて、2つの箱ひげ図がただのベタにしか見えません。データ範囲を小さくして、スケール上の指数表記に置き換えてみたのですが、表現するグラフの範囲が狭くて不格好でした。何かいい方法はないでしょうか?
答え1
なぜならここでは対数スケールに切り替えることはできません。以下に示すように、何らかの分割描画を行うことをお勧めします。備考:
- モノリシック軸を3つの個別の軸にコピーしました
- それぞれを
scope
(配置用など)に入れてください - それぞれに幅と高さを割り当てた
- 何らかの拡大を示すために線や矢印を付ける
がある素敵な写真を撮るために、まだやるべきことがいくつか残っています。
- より良い最小値/最大値を選択し、すべての「0」が中央に揃うようにします。
- 描画を簡素化するために、各スコープにグローバル名を割り当てる方法を見つけます。たとえば
\draw (A.south) -- (B.north west);
、(A) が最初のスコープ、(B) が 2 番目のスコープです。
最終提案: この図面をクラスで作成しstandalone
、パッケージを使用してgraphicx
、選択したドキュメントクラスに上記の PDF を画像として含めます。
\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}