具有多个图的条形图偏移

具有多个图的条形图偏移

我想创建一些直方图,并需要显示一些条形图。但是,我在使用这个 MWE 时遇到了两个问题:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
axis lines =center,
ybar=0pt, bar width=1cm,
samples at ={0,...,4},
xmin=-1,
xmax=4.6,]
\addplot [fill=cyan, fill opacity=0.5] {x + 1};
\addplot [fill=orange, fill opacity=0.5] {4 - x};
\end{axis}
\end{tikzpicture}

\end{document}

如果我只使用第一个图,则 x = 0 处的样本不会绘制,我不明白为什么:

在此处输入图片描述

如果我仅使用第二个图,则条形图将按预期绘制:

在此处输入图片描述

最重要的是,如果我绘制两者,我确实会得到第一个图的 x = 0 的样本,但奇怪的是,两者的偏移/宽度都减少了某个倍数:

在此处输入图片描述

我该如何通过多个图来修复这个宽度变化,以及宽度变化的原因是什么?

为什么第一个图中没有显示 x = 0 处的样本?

答案1

您需要将该ybar选项作为设置绘图类型的第一个选项 - (例如对于间距很重要)。

像这样:

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=0pt,
xmin=-1, xmax=4.6,
axis lines=center,
samples at={0,...,4},
bar width=10pt,
]
\addplot[fill=cyan, fill opacity=0.5] {x + 1};
\addplot[fill=orange, fill opacity=0.5] {4 - x};
\end{axis}
\end{tikzpicture}
\end{document}

条形图,条形彼此相邻

或者像这样:

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
xmin=-1, xmax=4.6,
axis lines=center,
samples at={0,...,4},
bar width=10pt,
bar shift=0pt,
]
\addplot[fill=cyan, fill opacity=0.5] {x + 1};
\addplot[fill=orange, fill opacity=0.5] {4 - x};
\end{axis}
\end{tikzpicture}
\end{document}

具有重叠条形的条形图

编辑:关于缺失的条形图 - 在您的第一张图片中,x=0 处的条形图没有缺失。该条形图的值为 1 - 因此正好位于 x 轴的位置。您可能想要提供选项ymin=0

相关内容