【问题标题】:Octave hist plot number formatOctave hist plot number 格式
【发布时间】:2014-01-30 11:27:38
【问题描述】:

我想用八度音阶hist() 函数绘制数据。遗憾的是,由于 x 轴的数字很大,所以以科学格式显示,例如 2e+007。

由于这有点难以阅读,我希望它们仅显示为以 10 为底的指数,没有乘积或 e。所以就像 10^5 一样。我怎样才能做到这一点?

当我使用loglog() 函数绘制数据时,它默认使用我需要的比例,但不适用于hist()

编辑:

为了更准确一点,我添加了一些代码和我的情节图片。

NUM_SAMPLES = 10000;
% Open file.
input = fopen(filename);

x = [];
for i=[1:NUM_SAMPLES]
    line = fgetl(input);
    data = strsplit(line, ';');
    x(end + 1) = str2num(data{1,2})/(1000);
endfor

% Close file.
fclose(input);

% Plot histogram.
figure('Position',[0,0,700,500]);
hist(x, 500);

所以我只是从我的文件中读取了一些大数字并想用 hist 绘制它。因为数字很大,所以会自动以本地比例和科学格式显示。在这里你可以看到一个示例图:

不幸的是set(gca(), 'xscale', 'log'); 并没有改变任何东西,所以我认为这个情节也考虑了对数比例,但只是一个糟糕的数字格式。

【问题讨论】:

  • 您能否发布您的代码并附上一些数据来说明问题?
  • 我的输入只是一个带有数字的向量,然后我用 hist(duration, 500); 绘制它。但由于大多数数字都很大,因此 octave 以所描述的格式显示 x 轴的数字。

标签: plot formatting scale octave histogram


【解决方案1】:

您可以手动设置xticklabelyticklabel,例如:

x = [1e7, 1e8, 1e9];
ax = gca();
set(ax, 'xticklabel', {'0','2e8','4e8','6e8','8e8','10e8'});
hist(x);

或者,您可以将 x 轴设置为对数刻度:

set(ax, 'xscale', 'log');

【讨论】:

  • 我不想总是手动设置标签。它应该自己适应数据,就像现在一样。仅以不同的格式显示数字。不幸的是,最后一行对我不起作用。
  • @Chris,为什么最后一行不起作用?它为 x 轴设置对数刻度。请提供您的数据,以便我们可以重现所需的plot() 输出和不需要的hist() 输出。
  • 我在一个较小的示例上进行了尝试,现在它可以工作了。但是,它不会改变我的原始数据。可能是因为我有问题的历史图也已经是对数比例,只是写数字的方式不同。我会在我的问题中添加更多细节,但我真的不做任何花哨的事情。
  • @Chris,请考虑删除数据中的异常值或改用箱线图。您上传的直方图没有帮助。
  • 我将放大以在 porper 比例中显示我想要的区域。也许箱形图也可以提供帮助,但我认为查看值的分布方式(频率)并不好。无论如何,这不是一个有助于解决我的问题的答案。
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 2020-08-01
  • 1970-01-01
相关资源
最近更新 更多