Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过plotyy在MATLAB中绘制2个垂直轴时设置轴限制_Matlab_Plot - Fatal编程技术网

通过plotyy在MATLAB中绘制2个垂直轴时设置轴限制

通过plotyy在MATLAB中绘制2个垂直轴时设置轴限制,matlab,plot,Matlab,Plot,我需要绘制以下数据集: data1 = [ 3 6 99 4 5]; data2 = [ 0.2 1.5 1.75 1.0 1.2]; 我的特殊情况是,我需要数据点data1(3),它等于99,而不是显示在图表上。我使用99作为一种将观测值推到期望轴极限之外的方法,这样对于自变量的某些值就没有可见的观测值。(我只使用标记绘制数据点,没有线。) 虽然data1和data2具有完全不相关的量表和含义,但它们共享完全相同的因变量: X=40:1:44 我使用以下命令进行绘图,这些命令是我从 到目前

我需要绘制以下数据集:

data1 = [ 3 6 99 4 5];
data2 = [ 0.2 1.5 1.75 1.0 1.2];
我的特殊情况是,我需要数据点
data1(3)
,它等于
99
,而不是显示在图表上。我使用99作为一种将观测值推到期望轴极限之外的方法,这样对于自变量的某些值就没有可见的观测值。(我只使用标记绘制数据点,没有线。)

虽然
data1
data2
具有完全不相关的量表和含义,但它们共享完全相同的因变量:

X=40:1:44
我使用以下命令进行绘图,这些命令是我从

到目前为止,一切顺利。我不知道如何在两个垂直轴上强制执行正确的限制。我希望的限制是:

ylimits1=[0 3]
ylimits2=[0 10]
如何设置每个垂直轴的限制?


我试过这个

set(get(AX(1),'Ylim'),ylimits1) 
set(get(AX(2),'Ylim'),ylimits2) 


但是这两种方法都不起作用。

以下方法应该起作用:

[AX,H1,H2] = plotyy(X,data1,X,data2);

set(AX(1),'ylim',ylimits1);
set(AX(2),'ylim',ylimits2); 

你还可以做其他一些随机的事情

x1 = 1:10
y1 = x1.^2
x2 = 10:120
y2 = sin(x2)
[AX,~,~] = plotyy(x1,y1,x2,y2);
set(get(AX(1),'Xlabel'),'String','both plots')
set(get(AX(2),'Ylabel'),'String','plot 2') 
set(AX(1),'YLim',[1  25],'YTick',7:23)

谢谢您能解释一下为什么设置标签属性时使用
set(get(AX(1),'Ylabel'),'String','This is vertical axis 1')
是有意义的,但您只需要执行
set(AX(1),'ylim',ylimits1)
即可设置ylim属性吗?也就是说,为什么
得到(AX(1),…)
语句的一部分?那么至少我不会被搞糊涂了!不过,我理解你的解决方案,这才是最重要的,因为它是有效的。再次感谢。事实上我不能告诉你,为什么你的第一次尝试不起作用。但是第二个肯定是错误的,因为在这种情况下,
gca
是错误的句柄。
[AX,H1,H2] = plotyy(X,data1,X,data2);

set(AX(1),'ylim',ylimits1);
set(AX(2),'ylim',ylimits2); 
x1 = 1:10
y1 = x1.^2
x2 = 10:120
y2 = sin(x2)
[AX,~,~] = plotyy(x1,y1,x2,y2);
set(get(AX(1),'Xlabel'),'String','both plots')
set(get(AX(2),'Ylabel'),'String','plot 2') 
set(AX(1),'YLim',[1  25],'YTick',7:23)