0

这是我的代码

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);

单轴工作正常

在此处输入图像描述

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

在此处输入图像描述

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

如何做到这一点?

4

1 回答 1

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命令。

于 2014-08-21T14:47:35.120 回答