그룹 플롯을 사용한 상자 그림의 X축 나누기

그룹 플롯을 사용한 상자 그림의 X축 나누기

나는 현재 내 상자 그림에 대해 x축 나누기를 진행하는 방법에 대해 고민하고 있습니다. 약간 관련된 tex.stackexchange 게시물을 살펴보면 이것이 groupplot으로 달성 가능해야 한다고 추측하지만 내 코드를 축에서 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}

x축 구분선이 있는 상자 그림에 대한 코드가 작동하지 않습니다.

\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}

감사해요!

편집하다:

나중에 참조할 수 있는 작업 코드:

\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}

답변1

귀하의 예제에서 가장 먼저 누락된 것은 입니다 \usepgfplotslibrary{groupplots, statistics}. 그러나 실제 문서에 해당 항목이 있다고 가정합니다.

코드에 몇 가지 문제가 있습니다.

  • 그룹 플롯의 축에 대한 일반적인 옵션은 내부가 아니라 group style외부에 있습니다. 따라서 axis line style={-}, ytick=\empty이동이 필요합니다.

  • 축의 너비만 설정하지만 높이도 설정하지 않으면 종횡비가 일정하게 유지됩니다. 축 레이블을 위한 공간을 확보하기 위해 기본적으로 축의 너비와 높이는 지정된 길이보다 45pt 작게 설정됩니다. scale only axis축 상자 자체에 길이를 적용하려면 추가하십시오 . 그렇지 않으면 2cm 폭의 축이 매우 작아집니다.

  • 두 번째 축의 좌표 플롯에서 x 값과 y 값을 바꿨습니다.

  • An은 axis discontinuity항상 축 선의 시작 부분에 배치되지만 이를 두 개의 축으로 분할했으므로 이것이 필요하지 않습니다. 대신 x axis line style={-|}선을 추가하는 등의 방법으로 축 선의 화살표 유형을 변경했습니다 . (또는 더 긴 막대를 얻으려면 추가 \usetikzlibrary{arrows.meta}하고 사용하십시오 .)x axis line style={-{Bar[width=15pt]}}

다른 조정도 한 것 같은데, 그게 제가 생각하는 주요 사항이었습니다.

여기에 이미지 설명을 입력하세요

\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}

관련 정보