상자 그림 스케일링

상자 그림 스케일링
\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개의 개별 축으로 복사했습니다.
  • scope예를 들어 배치를 위해 각 내부에 a를 넣으십시오 .
  • 너비와 높이를 각각 할당했습니다.
  • 어떤 종류의 배율을 나타내기 위해 선/화살표를 넣으세요.

있다멋진 사진을 위해 해야 할 일이 몇 가지 남았습니다.

  • 더 나은 최소/최대 값을 선택하면 모든 "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}

관련 정보