我正在尝试按照MATLAB的文档Graph with Multiple x-axes and y-axes来绘制2 x和y轴,而不是绘图而不是线。这就是我到目前为止所做的:
clear all; close all; clc;
% Arbitrary x's and y's
x1 = [10 20 30 40];
y1 = [1 2 3 4];
x2 = [100 200 300 400];
y2 = [105 95 85 75];
figure
plot(x1,y1,'Color','r')
ax1 = gca; % current axes
ax1.XColor = 'r';
ax1.YColor = 'r';
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none');
%line(x2,y2,'Parent',ax2,'Color','k') <--- This line works
plot(ax2, x2, y2) <--- This line doesn't work
我查看了情节文档2-D line plot,但似乎无法得到情节(ax,__)来帮助/做我期望的事情。
该图最终没有绘制第二个图,轴最终重叠。 任何建议如何解决这个问题并获得2轴绘图工作? 我目前正在使用MATLAB R2014b。
答案 0 :(得分:3)
在尝试考虑MATLAB的设置层次结构后,最后想出了这个。
该图似乎重置了轴ax2属性,因此在绘图之前设置它们并没有产生影响。看起来这行并没有这样做。因此,为了使这与图表一起使用,我做了以下内容:
clear all; close all; clc;
% Arbitrary x's and y's
x1 = [10 20 30 40];
y1 = [1 2 3 4];
x2 = [100 200 300 400];
y2 = [105 95 85 75];
figure
plot(x1,y1,'o', 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r')
ax2 = axes('Color','none'); % Create secondary axis
plot(ax2, x2,y2,'o', 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'b')
% Now set the secondary axis attributes
ax2.Color = 'none'; % Make the chart area transparent
ax2.XAxisLocation = 'top'; % Move the secondary x axis to the top
ax2.YAxisLocation = 'right'; % Move the secondary y axis to the right