我想创建一些直方图,并需要显示一些条形图。但是,我在使用这个 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
。