【问题标题】:How to create a histogram plot of a histogram?如何创建直方图的直方图?
【发布时间】:2017-07-27 22:35:22
【问题描述】:

我使用两个脚本创建直方图,一个是 matlabs 自己的 hist 函数,另一个是我下载的脚本。我下载的脚本采用绝对最小值和最大值,并在它们之间生成直方图。但问题是,与 MATLAB 不同,此直方图不显示。我看到了一个向量。

现在我使用plot 在视觉上比较两者,但由于某种原因,比例发生了变化。例如使用 MATLAB 的hist 的直方图如下所示:

如果我在plot 中显示此直方图,x 轴刻度会发生变化:

我怎样才能保持比例不变?

我需要这个,因为下载的脚本不会生成直方图,所以我使用plot 来显示它。再次,情节在 0 到 100 之间,我觉得这可能不是一个准确的比较

【问题讨论】:

  • 这是哪个版本的 MATLAB?通常您会使用hist(bin 中心)的输出之一作为第二个绘图的x 值,而不是仅使用plot(counts) 绘图...
  • 我使用的是 Matlab 2016a
  • 脚本应该告诉您 bin 边缘,或者更好的是它用于构建直方图的 bin 中心。它会这样做吗?
  • @LuisMendo 我已经将代码添加到我的问题中,不,它没有。我对它生成的输出很满意,但我也需要它像 matlab 那样显示

标签: matlab plot comparison histogram visualization


【解决方案1】:

您似乎没有使用所有可用的信息。请参阅下面的代码,了解如何完成您想要的操作:

%% Generate some data:
rng(42653042);
data = randn(300); data = (data-min(data(:)))*90+100;
data(1:4:end) = data(1:4:end)/2;
%% Plot using hist:
figure(); hist(data(:),100);
%% Return bin info using hist:
[N,X] = hist(data(:),100);
%% Plot the other function's output w/o X:
figure(); plot(N);
%% Plot the other function's output w/ X:
figure(); plot(X,N);
figure(); bar(X,N);

函数hist 应在较新版本的 MATLAB 中替换为:

  • histogram,用于绘图时(即hist 没有输出的情况)。
  • histcounts,用于计数时(即带有输出的hist 的情况)。

【讨论】:

  • 谢谢,我不知道第二个输出。这修复了 matlab 输出。但我无法再次比较,因为我正在使用的脚本(上面添加)没有提供这样的第二个输出,当它被绘制时,我再次得到一个介于 0 和 100 之间的图。
  • @StuckInPhD 您不需要第二个脚本来输出任何其他内容。它只会为您提供计数 (N)... 以及您应该已经从您自己的 hist... 中获得的职位 (X)...
  • 感谢@Dev-il。我需要第二个脚本来生成固定最小值和最大值之间的直方图,Matlab 没有这个,并且每个直方图都适应自己的最小值和最大值。两者的形状和输出也非常不同。出于分类目的,所有直方图必须在固定比例之间,例如在 -50 和 250 之间。我找不到 matlab 的 hist 的这个设置
【解决方案2】:

使用“n = hist(Y,x) 其中 x 是一个向量,返回 Y 在 x 指定中心的长度 (x) 个 bin 中的分布”,以指定 bin 中心。

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2018-04-16
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多