垂直直方图 tikz

垂直直方图 tikz

如何在 Tikz 中创建垂直直方图?

我正在创建一个如下所示的图形,但它只是一个概念图,因此我不需要它来跟踪真实数据。

在此处输入图片描述

我已经有一个包含所有需要内容的正方形,但我希望能够在 Y 轴左侧定位一个直方图。我曾想过创建一堆方框,但我想可能有更好的方法。

答案1

使用pgfplots可能是一种选择,水平条可以用 制作xbar,垂直条可以用 制作ybar。一些要点:

  • 您只想要直方图,因此hide axis隐藏轴线、刻度等。
  • scale only axis 再想想可能就没必要了。如果没有此选项,则指定的宽度/高度将包括轴标签和刻度标签。
  • 您可以使用 键将轴放置在所需位置at,例如,将at={(5cm,0)}的左下角放置在。axis(5cm,0)
  • 为了确保条形图之间没有空格,并且显示条形图的整个宽度,需要采取以下步骤:
    1. width将/设置为特定长度,例如height水平条。axisheight=5cm
    2. 条形图本身的宽度是轴宽/高除以条形图的数量。下面的例子中我有三个条形图,所以我将其设置bar width=5cm/3为水平条形图。
    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}

相关内容