答案1
使用pgfplots
可能是一种选择,水平条可以用 制作xbar
,垂直条可以用 制作ybar
。一些要点:
- 您只想要直方图,因此
hide axis
隐藏轴线、刻度等。 scale only axis
再想想可能就没必要了。如果没有此选项,则指定的宽度/高度将包括轴标签和刻度标签。- 您可以使用 键将轴放置在所需位置
at
,例如,将at={(5cm,0)}
的左下角放置在。axis
(5cm,0)
- 为了确保条形图之间没有空格,并且显示条形图的整个宽度,需要采取以下步骤:
width
将/设置为特定长度,例如height
水平条。axis
height=5cm
- 条形图本身的宽度是轴宽/高除以条形图的数量。下面的例子中我有三个条形图,所以我将其设置
bar width=5cm/3
为水平条形图。 - y 坐标位于条形图的中心,因此为了确保
pgfplots
足够延伸轴范围,我添加了enlargelimits={abs=5cm/6}
,这意味着轴范围将延伸至第一个/最后一个点以外半个条形图的宽度。
\documentclass[tikz, border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (4,5);
% histogram on right
\begin{axis}[
at={(4cm,0)},
xbar,
enlargelimits={abs=5cm/6},
scale only axis,
hide axis,
height=5cm,
bar width=5cm/3]
\addplot coordinates {(3,0)(5,1)(2,2)};
\end{axis}
%histogram on top
\begin{axis}[
at={(0,5cm)},
ybar,
enlargelimits={abs=4cm/6},
scale only axis,
hide axis,
width=4cm,
bar width=4cm/3]
\addplot coordinates {(0,1)(1,4)(2,2)};
\end{axis}
\end{tikzpicture}
\end{document}