MATLAB 多个纵坐标

2019-01-19 17:34

帮找了一个Canadan做的,应该能解决楼主的问题。 复制内容到剪贴板

代码:

function [ax,hlines] = plotyyy(x1,y1,x2,y2,x3,y3,ylabels) %PLOTYYY - Extends plotyy to include a third y-axis

%Syntax: [ax,hlines] = plotyyy(x1,y1,x2,y2,x3,y3,ylabels)

%Inputs: x1,y1 are the xdata and ydata for the first axes' line % x2,y2 are the xdata and ydata for the second axes' line % x3,y3 are the xdata and ydata for the third axes' line % ylabels is a 3x1 cell array containing the ylabel strings %Outputs: ax - 3x1 double array containing the axes' handles % hlines - 3x1 double array containing the lines' handles %Author: Denis Gilbert, Ph.D., physical oceanography %Maurice Lamontagne Institute

Tpt. of Fisheries and Oceans Canada %email: gilbertd@dfo-mpo.gc.ca

%Web: http://www.qc.dfo-mpo.gc.ca/iml/ %April 2000; Last revision: 14-Nov-2001 if nargin==6

ylabels{1}=' '; ylabels{2}=' '; ylabels{3}=' '; elseif nargin > 7

error('Too many input arguments') elseif nargin < 6

error('Not enough input arguments') end

figure('units','normalized',...

'DefaultAxesXMinorTick','on','DefaultAxesYminorTick','on'); [ax,hlines(1),hlines(2)] = plotyy(x1,y1,x2,y2); cfig = get(gcf,'color'); pos = [0.1 0.1 0.7 0.8]; offset = pos(3)/5.5;

pos(3) = pos(3) - offset/2; set(ax,'position',pos);

pos3=[pos(1) pos(2) pos(3)+offset pos(4)]; limx1=get(ax(1),'xlim');

limx3=[limx1(1) limx1(1) + 1.2*(limx1(2)-limx1(1))]; ax(3)=axes('Position',pos3,'box','off',...

'Color','none','XColor','k','YColor','r',... 'xtick',[],'xlim',limx3,'yaxislocation','right'); hlines(3) = line(x3,y3,'Color','r','Parent',ax(3)); limy3=get(ax(3),'YLim');

line([limx1(2) limx3(2)],[limy3(1) limy3(1)],...

'Color',cfig,'Parent',ax(3),'Clipping','off'); axes(ax(2))

set(get(ax(1),'ylabel'),'string',ylabels{1}) set(get(ax(2),'ylabel'),'string',ylabels{2}) set(get(ax(3),'ylabel'),'string',ylabels{3}) 实例:

在Commond Window里运行: 复制内容到剪贴板

代码:

x = [0 0.1 0.2 0.3 0.4 0.426 0.5 0.6 0.688 0.7 0.8 0.9 1.0]; y = [268.95 272.36 275.07 277.07 277.93 278 276.5 267.16 248.2 244.3 200.37 137.71 58.7];

a = [0 0.225 0.408 0.566 0.693 0.718 0.776 0.82 0.831 0.831 0.818 0.784 0.6];

k = [2.55 2.254 2.063 1.886 1.733 1.687 1.552 1.368 1.207 1.187 1.023 0.873 0.6];

ylabels{1}='轴1'; ylabels{2}='轴2'; ylabels{3}='轴3';

[ax,hlines] = plotyyy(x,y,x,a,x,k,ylabels); legend(hlines, 'y = x','a =x','k = x',2)

[ 本帖最后由 seetheworld 于 2009-3-9 13:23 编辑 ] 附件

plotyyy.jpg (27.58 KB)

2009-3-9 13:23


MATLAB 多个纵坐标.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:上半年电信援藏工作总结(多篇范文)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: