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

我有4组值:y1,y2,y3,y4和一组x。y值的范围不同,我需要将它们绘制为单独的曲线,并在y轴上使用不同的值集。


简单来说,我需要3个Y轴,它们的值(比例尺)不同,以便在同一张图上进行绘制。


任何帮助表示赞赏,或在哪里寻找提示。


撒科打诨
浏览 955回答 3
3回答

忽然笑

您可以尝试的一种可能性是创建三个轴,一个轴堆叠在另一个轴上'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 pixelsyWidth = 30;                      %# y axes spacing, in pixelsxLimit = [min(x) max(x)];         %# Range of x valuesxOffset = -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');这是结果图:
打开App,查看更多内容
随时随地看视频慕课网APP