【问题标题】:Logarithmic Y scale, multiple value plot对数 Y 刻度,多值图
【发布时间】:2014-04-17 15:11:46
【问题描述】:

我想用对数 Y 刻度在同一张图上绘制多个值。以下代码将值绘制到线性比例图上并且可以工作,但是尝试用“semilogy”更改“plot”会输出一个空白图。

hold on;
for i = 1:10
  [val1(i), val2, val3, val4] = myFunct(i, fileName);
end;

plot(val1);
hold off;

我需要更改什么来创建对数的 Y 刻度?

修改后的代码:

hold on;
for i = 1:10
  [val1(i), val2, val3, val4] = myFunct(i, fileName);
end;

val1(1) = 0.000001; %index 1 is always zero, index 2 may or may not be zero
val1(2) = 0.000001;

semilogy(val1);
hold off;

以上代码的输出:

【问题讨论】:

  • 尝试在命令行输入help semilogy ...
  • 某些 x 或 y 值是负数还是零?
  • 你确定吗?您能否编辑问题以包含更新后的代码?
  • 这应该给你你想要的。我不确定你为什么说这给出了一个线性比例图。您可以将您的图表作为图像上传到问题中吗? (您可以使用文件 -> 另存为 -> 选择图像格式,例如 png 来保存图形)。
  • 这一定是某种图形问题,可能是由于您正在运行的其他代码。删除hold 命令(您不需要它们,因为您只有一个绘图),执行close all,然后重试。

标签: matlab graph plot logarithm


【解决方案1】:

试试这个:

% Calculate
for i = 1:10
  [val1(i), val2, val3, val4] = myFunct(i, fileName);
end

% Plot
figure;
plot(val1+eps);
set(gca, 'YScale','log');

【讨论】:

    【解决方案2】:

    hold on 命令阻止图形从您之前执行的常规plot 更新为semilogy。要解决这个问题,您应该关闭您的图形并再次运行代码。

    请注意,如果您只有一个绘图命令,则没有理由使用hold 命令。 hold 的目的是使多个绘图命令可以叠加在同一个图中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2014-01-18
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多