使用绘图和填充绘制第二个y轴(无绘图)

时间:2014-08-21 14:31:10

标签: matlab plot multiple-axes

这是我的代码

clear all;clc
x = linspace(0, 10, 100);

axes('Position', [.075,.075,.9,.2], ...
     'XColor',   'k', ...
     'YColor',   [0 0 0]);
fill(x, circshift(sin(x), 50), 'red', 'EdgeColor','None');
ylabel('Fancy Sine', 'FontSize', 11);

% Adding this the upper vanishes and the y axes is on left not right side
axes('Position',      [.075,.075,.9,.2], ...
     'XColor',        'k', ...
     'YAxisLocation', 'Right', ...
     'Color',         'none');
plot(x, x, 'Color', [.2 .4 .8]);
ylabel('Line Graph', 'FontSize', 11);

xlabel('X', 'FontSize', 11);

单轴工作正常

enter image description here

但是当我想添加第二个轴时,第一个轴消失,新轴不在右侧,而是在左侧..

enter image description here

但是两个图都应该在一个轴上,第二个y轴应该在右侧。

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

plot自动将轴属性设置为默认值。使用hold停止此操作或在plot来电后指定轴属性。

前者的一个例子:

clear all;clc
x = linspace(0, 10, 100);

ax1 = axes('Position', [.075,.075,.9,.2], ...
     'XColor',   'k', ...
     'YColor',   [0 0 0]);
p1 = fill(x, circshift(sin(x), 50), 'red', 'EdgeColor','None','Parent',ax1);
ylabel('Fancy Sine', 'FontSize', 11);

% Adding this the upper vanishes and the y axes is on left not right side
ax2 = axes('Position',      [.075,.075,.9,.2], ...
     'XColor',        'k', ...
     'YAxisLocation', 'Right', ...
     'Color',         'none');
hold on
p2 = plot(ax2,x, x, 'Color', [.2 .4 .8]);
hold off
ylabel('Line Graph', 'FontSize', 11);
xlabel('X', 'FontSize', 11);

Edit1:你不需要为fill调用执行此操作的原因是因为它在您的轴中创建了一个patch对象,并且没有调用plot命令。 / p>