【问题标题】:Plot histogram from vector of counts从计数向量绘制直方图
【发布时间】:2015-10-09 03:22:55
【问题描述】:

如果我有直方图边缘和 bin 计数的向量,是否可以使用它直接生成直方图?

例如,给定数据向量

edges = 0:10; % histogram edges for 9 bins
counts = round(normpdf(edges(1:end-1), 5, 2) * 1000) % Generate bin counts

counts =

     9    27    65   121   176   199   176   121    65    27

我总是可以人工生成数据

data = [];
for i = 1:numel(counts)
  % This should be optimised by pre-allocating the data array,
  % but this is only provided as an example.
  data = [data (ones(1, counts(i)) * mean(edges(i:i+1)))];
end

这样numel(data) == sum(counts) 和我就可以使用histogram(data, edges) 绘制直方图:

但是,我想这样做而不必执行生成人工数据的中间步骤,因为这看起来相当复杂。

我知道我可以使用bar 函数,但我更喜欢使用histogram,因为我更喜欢它的绘图方式和它提供的功能。

编辑:我正在使用 MATLAB R2015a / R2015b,但如果可能的话,我更愿意保持与 R2015a 的向后兼容性(我知道在 R2015b 中对 histogram 进行了相当大的更改)。

【问题讨论】:

  • 你为什么不喜欢酒吧? histogram 计算计数,然后调用 bar....
  • @AnderBiguri,你确定吗? bar 返回一个 Bar 对象,histogram 返回一个 Histogram 对象,它们都是原语。 Histogram 对象具有很好的属性,例如FaceAlpha,这些属性在bar 中不可用。也许hist 曾经在内部使用bar,但我相当确定histogram(在R2014b 中引入)从头开始重新实现了该功能。
  • 我会为此使用补丁。
  • 我从字面上看不出你的情节和这个情节之间没有区别:oi62.tinypic.com/34z0m5u.jpg 当你的数据集使用 bar 函数时:new_edges=(edges(1:10)+0.5) bar(new_edges,counts ,1) 但是如果你坚持使用直方图,那我真的不知道:)

标签: matlab matlab-figure matlab-hg2


【解决方案1】:

我认为您无法避免将实际数据提供给Histogram 对象。 Histogram 对象的功能包括能够在事后更改 bin/edges,为此它需要知道其源数据。

【讨论】:

  • 不幸的是我认为这是正确的答案:(
猜你喜欢
  • 2013-10-02
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多