在一张图使用双坐标是一个比较常见的问题。这里大概讨论一下。
matlab提供了plotyy函数,其用法如下:
plotyy(X1,Y1,X2,Y2)
plotyy(X1,Y1,X2,Y2,function)
plotyy(X1,Y1,X2,Y2,'function1','function2')
[AX,H1,H2] = plotyy(...)
其中function为function(x,y)形式的函数句柄,可以使用匿名函数。
但直接使用有以下问题:
(1)对多组数据的支持不好,用法说明不明。
(2)一组[X1,Y1]不适合一次画出时,支持也不好。
因此本文建议用如下方式处理;
tf = @(x, y) plot(x, y, 'Visible', 'off'); %temporary function handle;
figure;
h = plotyy(0, 0, 0, 0, tf, tf); % create a blank axes
axes(h(1));
hold on;
%plot code part1;
xlim(...);ylim(...);
axes(h(2));
hold on;
%plot code part2;
ylim(...);
分析:
(1)plotyy的句柄是一个二维向量,分别对应坐标系1和2,也可以使用独立句立句柄设置。
(2)hold on单独写出是因为多组数据绘图时似乎会各种不对。
(3)这样绘图X坐标显示可能会比较乱,需要自行设置好。
(4)另外 帮助中的 Graph with Multiple x-Axes and y-Axes 部分可供参阅。
(5)xlim和ylim单独写出是因为在第一次运行plotyy会指定默认的xlim和ylim并且不会随后来的plot更改,需要自行调整。