【问题标题】:MATLAB: One-hot matrix to histogramMATLAB:一键矩阵到直方图
【发布时间】:2017-03-23 09:35:29
【问题描述】:

我有一个单热编码矩阵(大小1E6 x 10),其中每一行代表一个观察值,每一列代表一个类别。如何创建直方图来可视化每个类别的计数并在 x 轴上标记类别名称(我猜是垂直放置以防止重叠),而不仅仅是使用列号?

【问题讨论】:

  • 直方图计数不就是sum(M, 1)吗?
  • 嗯,它给出了一个总数的向量,但不知道如何从中制作直方图。
  • 鉴于您在谈论“标签”,您不需要“直方图”,您需要条形图。
  • 啊,我想我应该只使用 bar() 谢谢

标签: matlab histogram one-hot-encoding


【解决方案1】:

如果您的矩阵是M,您可以按照烧杯的建议获得逐行总和,并使用它来绘制条形图。 (因为您在谈论标签,所以您不太可能需要这样的“直方图”)。

bar (sum (M, 1));

要将标签设置为名称,您可以编辑生成的坐标区对象的属性:

set (gca, 'xticklabel', {'one', 'two', 'three', 'four', 'five', 'six'});

如果您使用的是 Matlab 2014b 或更高版本,您还可以控制旋转:

set (gca, 'xticklabelrotation', 90);

【讨论】:

  • 或者您可以将标签传递给bar,就像我在 cmets 中发布的链接一样。
  • 谢谢。无论如何,我必须旋转标签,我不妨这样做。
  • @beaker 我的错,对不起,我什至没有点击它(我只是假设它是通用栏参考页面,没有看到锚点)。话虽如此,如果唯一的用途是用作 x 标签,我认为转换为分类可能有点矫枉过正。
  • 是的,如果你还是要旋转它,不妨留在set
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2015-02-04
  • 2015-02-11
  • 1970-01-01
相关资源
最近更新 更多