Two y axis with the same x-axis [duplicate]
Possible Duplicate:
Plotting 4 curves in a single plot, with 3 y-axes
assuming I have the following dataset as an example here in Matlab:
x = linspace(0, 9, 10);
y1=arrayfun(@(x) x^2,x);
y2=arrayfun(@(x) 2*x^2,x);
y3=arrayfun(@(x) x^4,x);
thus you can see they have the SAME x-axis. Now I want the following plot:
one x-axis with the limits 0 to 9 (those limits should also be ticks) with N ticks (I want to be able to define N myself), thus having N-2 ticks inbetween because 0 and 9 itself are already ticks. I want y1 and y2 t开发者_开发知识库o refer to the same y-axis, which is being displayed on the left with ticks for 0 and max([y1, y2]) and M more ticks inbetween. than I want to have another axis on the right, where y3 refers to...
y1, y2 and y3 should have entries in the same legend box... thanks so far!
edit: argh just found this: Plotting 4 curves in a single plot, with 3 y-axes perhaps I can bould it up myself... I will try just right now!
EDIT: What when using logarithmic x-axis?!
See this documentation on Using Multiple X- and Y-Axes. Something like this should do the trick:
figure
ax1 = gca;
hold on
plot(x,y1)
plot(x,y2)
ax2 = axes('Position',get(ax1,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor','k','YColor','k');
linkaxes([ax1 ax2],'x');
hold on
plot(x,y3,'Parent',ax2);
Edit: whoops, missed a hold command. Should work now. Also, to remove the second x-axis on top, simply add 'XTickLabel',[]
to the axes
command.
As an aside, you really shouldn't use arrayfun
for y1=arrayfun(@(x) x^2,x);
. Instead, use the .^
operator: y1=x.^2;
. It's much better style and is much quicker.
精彩评论