【问题标题】:Why does Plot hide another Plot in Octave?为什么 Plot 在 Octave 中隐藏另一个 Plot?
【发布时间】:2021-08-11 11:20:07
【问题描述】:

我正在使用 Octave 中的 GUI 来绘制三个 Y 轴和一个 X 轴。 我的问题是一个情节隐藏了另一个情节。 Acutually 它应该显示每个图表。但它只显示我的最后一个代码。我使用 hold on hold off 代码来显示多个y 图。但它不像e 那样工作。

我的绘图代码如下所示。

h1 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea','ycolor','r'); 
      plot( h1, XData, YData, 'tag', 'plotobject','color','r');
      hold on
h2 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea_1','ycolor','b'); 
      plot( h2, XData, Y_1Data, 'tag', 'plotobject_1','color','b') 
      hold on
h3 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea_2','ycolor','k');
      plot( h3, XData, Y_2Data, 'tag', 'plotobject_2','k');
      hold off
      grid on
  endfunction

任何帮助表示赞赏,或在哪里查看提示。

【问题讨论】:

  • 不要制作新轴。每个轴都在彼此之上创建一个新轴(包括白色方块)。你希望你的所有地块都在同一个轴上!
  • 感谢您的回答@Ander Biguri!但是为了一次显示三个 y 轴,我需要为此制作新轴......因为我的数据有不同的单位(mbar、μm 等等)我需要制作另一个轴来一次显示它,比如this
  • 啊,是的,但它们相互覆盖。不确定是否可以使它们透明,或者在最后一个(缩放)中绘制所有图
  • 再次感谢您的回复。是的,如果我只能用一个轴做到这一点,我想这样做。为了透明,我输入了'backgroundcolor','none',但它不起作用...phwww
  • 您可以对所有数据进行归一化,将它们绘制在一个轴上,然后使用带有 \color{red} 之类的前缀的 yticklabels。标签将使用sprintf 创建。但这是一堆工作,不确定何时可以使用subplot 是否值得。

标签: plot octave octave-gui


【解决方案1】:

在我的评论中解释方法:

x = 1:10;
y1 = [0.071787 0.713441 0.520276 0.983740 0.744507 0.595129 0.086762 0.228372 0.565195 0.308494];
y2 = y1 .^ 2;
y3 = y1 .* 2 - 1;

% normalize all data to range [0, 1]
y1off = y1 - min(y1);
y1nor = y1off / max(y1off);
y2off = y2 - min(y2);
y2nor = y2off / max(y2off);
y3off = y3 - (-1.2); % an arbitrary value
y3nor = y3off / (2.4); % this is like doing ylim([-1.2, -1.2 + 2.4])

plot(x, y1nor, 'r', x, y2nor, 'g', x, y3nor, 'b--');

nticks = 5;
yticks(linspace(0, 1, nticks));
yticklabels(arrayfun(@(a, b, c) sprintf('\\color{red}%6.2f \\color{green}%6.2f \\color{blue}%6.2f', a, b, c), ...
  linspace(min(y1), max(y1), nticks), ...
  linspace(min(y2), max(y2), nticks), ...
  linspace(-1.2, -1.2 + 2.4, nticks), ...
  'UniformOutput', false));
  
ylabel({'\color{red}Label 1', '\color{green}Label 2', '\color{blue}Label 3'})

此代码导致此图:

【讨论】:

  • 非常感谢 Cem!我不知道这样的标准化函数。当我使用您的代码并更改 Y 值时,轴也会发生变化。但是,如果我将您的代码应用于我的代码,则轴不会改变。我认为调用函数和参数是我的 GUI 的问题。
  • 我在here写了另一个问题。如果您对此有所了解,我会很高兴!
【解决方案2】:

对于第一个之后的轴,将color 属性设置为none,将nextplot 属性设置为add

h1 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea','ycolor','r'); 
    plot( h1, XData, YData, 'tag', 'plotobject','color','r');

% either after creating the axes:
h2 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea_1','ycolor','b', 'color', 'none');
    set(gca, 'nextplot', 'add')
    plot( h2, XData, Y_1Data, 'tag', 'plotobject_1','color','b')

% or while creating the axes:
h3 = axes ('position', [0.45 0.25 0.5 0.5], 'tag', 'plotarea_2','ycolor','k', ...
   'color', 'none', 'nextplot', 'add');
    plot( h3, XData, Y_2Data, 'tag', 'plotobject_2','k');
    grid on

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多