为了账号安全,请及时绑定邮箱和手机立即绑定

用3个y轴在一个绘图中绘制4条曲线

用3个y轴在一个绘图中绘制4条曲线

撒科打诨 2019-11-30 10:49:53
我有4组值:y1,y2,y3,y4和一组x。y值的范围不同,我需要将它们绘制为单独的曲线,并在y轴上使用不同的值集。简单来说,我需要3个Y轴,它们的值(比例尺)不同,以便在同一张图上进行绘制。任何帮助表示赞赏,或在哪里寻找提示。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

您可以尝试的一种可能性是创建三个轴,一个轴堆叠在另一个轴上'Color',将顶部两个轴的属性设置为,'none'以便所有图可见。您必须调整轴的宽度,位置和x轴限制,以使3个y轴并排而不是彼此重叠。您还希望从两个轴中删除x轴刻度线和标签,因为它们将彼此叠置。


这是一个通用实现,可以计算轴的正确位置和x轴限制的偏移量,以使图正确对齐:


%# Some sample data:

x = 0:20;

N = numel(x);

y1 = rand(1,N);

y2 = 5.*rand(1,N)+5;

y3 = 50.*rand(1,N)-50;


%# Some initial computations:

axesPosition = [110 40 200 200];  %# Axes position, in pixels

yWidth = 30;                      %# y axes spacing, in pixels

xLimit = [min(x) max(x)];         %# Range of x values

xOffset = -yWidth*diff(xLimit)/axesPosition(3);


%# Create the figure and axes:

figure('Units','pixels','Position',[200 200 330 260]);

h1 = axes('Units','pixels','Position',axesPosition,...

          'Color','w','XColor','k','YColor','r',...

          'XLim',xLimit,'YLim',[0 1],'NextPlot','add');

h2 = axes('Units','pixels','Position',axesPosition+yWidth.*[-1 0 1 0],...

          'Color','none','XColor','k','YColor','m',...

          'XLim',xLimit+[xOffset 0],'YLim',[0 10],...

          'XTick',[],'XTickLabel',[],'NextPlot','add');

h3 = axes('Units','pixels','Position',axesPosition+yWidth.*[-2 0 2 0],...

          'Color','none','XColor','k','YColor','b',...

          'XLim',xLimit+[2*xOffset 0],'YLim',[-50 50],...

          'XTick',[],'XTickLabel',[],'NextPlot','add');

xlabel(h1,'time');

ylabel(h3,'values');


%# Plot the data:

plot(h1,x,y1,'r');

plot(h2,x,y2,'m');

plot(h3,x,y3,'b');

这是结果图:

//img1.sycdn.imooc.com//5de1d8f3000139be03460352.jpg

查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 954 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信