масштабирование коробчатой ​​диаграммы

масштабирование коробчатой ​​диаграммы
\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}

введите описание изображения здесь

Я хочу показать вам хорошо для каждого диапазона данных, но разрыв между каждым диапазоном данных настолько велик, что две диаграммы ящиков выглядят просто сплошными. Я попытался уменьшить диапазон данных и заменить его экспоненциальной записью на шкале, но это было неудобно, потому что диапазон графиков, которые нужно выразить, узкий. Есть ли хороший способ для меня?

решение1

Потому чтоздесь нельзя переключиться на логарифмическую шкалу, предлагаю сделать некое подобие разделенного рисунка, как показано ниже. Замечания:

  • скопировал вашу монолитную ось на 3 отдельные
  • поместите каждый вставленный a scope, например, для размещения
  • каждому назначена ширина и высота
  • нарисуйте несколько линий/стрелок, чтобы обозначить некое увеличение

Естьосталось сделать несколько дел для красивой картинки:

  • выберите лучшие значения min/max, чтобы все «0» были выровнены по центру
  • найдите способ назначить глобальные имена каждой области, чтобы упростить рисование, например, как \draw (A.south) -- (B.north west);, где (A) — первая, а (B) — вторая область

Последнее предложение: Создайте этот рисунок в 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}

Связанный контент