Разрыв оси X для диаграммы ящиков с групповой диаграммой

Разрыв оси X для диаграммы ящиков с групповой диаграммой

В настоящее время я в тупике, как приступить к получению разрыва оси X для моего ящика-плота. Просматривая немного связанные посты tex.stackexchange, я предполагаю, что это должно быть достигнуто с помощью groupplot, но мой ящик-плот не отображается, когда я переключаю свой код с оси на groupplot..

Чтобы проиллюстрировать, чего я хотел бы добиться:

Есть ли у вас какие-нибудь советы по этому поводу?

Рабочий код без break и 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}, но я полагаю, что в вашем документе они есть.

В вашем коде есть несколько ошибок.

  • Общие параметры для осей в groupplots не входят внутрь group style, а выходят за его пределы. Следовательно, axis line style={-}, ytick=\emptyнеобходимо переместить.

  • Вы задаете только ширину оси, но соотношение сторон останется неизменным, если вы не зададите также и высоту. Учтите также, что по умолчанию ширина и высота оси будут установлены на 45 пунктов меньше указанных длин, чтобы освободить место для меток осей. Добавьте , scale only axisчтобы длины применялись к самому полю оси, в противном случае ось шириной 2 см станет совсем маленькой.

  • На координатном графике по второй оси вы поменяли местами значения x и y.

  • An axis discontinuityвсегда помещается в начале линии оси, но поскольку вы разделили ее на две оси, вам это не нужно. Вместо этого я изменил тип стрелки для линий оси с eg, x axis line style={-|}чтобы добавить линии. (Или add \usetikzlibrary{arrows.meta}и use 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}

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