为什么 Plot 在 Octave 中隐藏了另一个 Plot?
Why does Plot hide another Plot in Octave?
我正在使用 Octave 中的 GUI 绘制三个 Y 轴和一个 X 轴。
我的问题是一个情节隐藏了另一个情节。实际上它应该显示每个图表。但它只显示了我的最后一个代码。我使用 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
感谢任何帮助,或有关查找位置的提示。
在我的评论中解释方法:
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'})
此代码生成此图:
对于第一个轴之后的轴,将 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
我正在使用 Octave 中的 GUI 绘制三个 Y 轴和一个 X 轴。
我的问题是一个情节隐藏了另一个情节。实际上它应该显示每个图表。但它只显示了我的最后一个代码。我使用 hold on
和 hold off
代码来显示多个 y 图。但它不是这样工作的
我的绘图代码如下所示。
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
感谢任何帮助,或有关查找位置的提示。
在我的评论中解释方法:
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'})
此代码生成此图:
对于第一个轴之后的轴,将 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