加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【Matlab】 如何在一张图上画多个坐标轴

(2012-08-23 14:01:59)
标签:

杂谈

分类: MATLAB

原帖:http://www.matlabsky.com/thread-11209-1-1.html


文件交流上好像有画3y轴的函数:

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

�pt. of Fisheries and Oceans Canada

%email:   

%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})

% 例子
% 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)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有