В настоящее время я в тупике, как приступить к получению разрыва оси 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}
и usex 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}