Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
解决Matlab轴限制的方法?_Matlab_Plot - Fatal编程技术网

解决Matlab轴限制的方法?

解决Matlab轴限制的方法?,matlab,plot,Matlab,Plot,我从Matlab 2015b升级到2019a,并被告知不再推荐使用plotyy。建议改为使用功能yyaxis。然而,我似乎无法让它正确地处理分组的条形布局: close all; clear BarSeries = [2 5 8;9 6 3]' xData = [1 4 7]'; myBarFn = @(x,y) bar( x,y, 'BarLayout','grouped' , 'BarWidth',1 ); % Customized bar function % Using plot

我从Matlab 2015b升级到2019a,并被告知不再推荐使用
plotyy
。建议改为使用功能
yyaxis
。然而,我似乎无法让它正确地处理
分组的
条形布局

close all; clear
BarSeries = [2 5 8;9 6 3]'
xData = [1 4 7]';
myBarFn = @(x,y) bar( x,y, 'BarLayout','grouped' , 'BarWidth',1 );
   % Customized bar function

% Using plotyy
v0 = [0 0 0]'; % Dummy zeros
figure(1)
ax = plotyy( xData , [ BarSeries(:,1) v0             ] , ...
             xData , [ v0             BarSeries(:,2) ] , ...
             myBarFn , myBarFn );
title('Using plotyy');
set( gcf, 'Position' , [0 100 288 235] );

% Using yyaxis
figure(2)
yyaxis left;
ax = gca;
myBarFn( xData, BarSeries(:,1) );
yyaxis right;
myBarFn( xData, BarSeries(:,2) );
title('Using yyaxis');
set( gcf, 'Position' , [300 100 288 235] );


这只是虚拟数据,但对于两个条形序列,真实数据的值范围将非常不同。所以我需要两个y轴。是一种使用
yyaxis
而不是
plotyy
实现
分组的
条形布局的方法。

查看这是否是您想要的。我已将您的代码用于
yyaxis
,仅更改了标记为
%%Changed
的两行代码:

close all; clear
BarSeries = [2 5 8;9 6 3].';
xData = [1 4 7]';
myBarFn = @(x,y) bar( x,y, 'BarLayout','grouped' , 'BarWidth',1 );
   % Customized bar function

% Using yyaxis
figure
yyaxis left;
ax = gca;
myBarFn( xData, [BarSeries(:,1) NaN(size(BarSeries,1), 1)] ); %%% Changed
yyaxis right;
myBarFn( xData, [NaN(size(BarSeries,1), 1) BarSeries(:,2)] ); %%% Changed
title('Using yyaxis');
set( gcf, 'Position' , [300 100 288 235] );

plotyy
yyaxis
不适用于此类用途:它们用于激活左y轴和右y轴,可能具有两种不同的比例(请参见右侧的图片)。您是否希望获得两个不同的y刻度作为主要结果?---同时检查此项:是的,实际数据将具有不同的比例,这是转到两个y轴的原因。您引用的示例不是使用
yyaxis
获得相同效果的方法。如果我不能用
yyaxis
实现这一点,那么我觉得简单地使用
plotyy
会更容易。但是,在这样做之前,我只是想检查一下是否有一个我忽略的简单解决方案。您需要与
yyaxis
不同的y轴比例(8和10),还是与
plotyy
相同的比例(两种情况下都是10)?
bar(扩展数据,BarSeries,1)
就足够了吗?是的,实际数据将有非常不同的值范围。这就是我需要2个y轴的原因。这种方法反映了
plotyy
的方案,因为它覆盖了两个图,每个图都是一个双条形系列。在每个图中,两个条形图系列中的一个是虚拟数据。如果对
plotyy
的支持已经结束,我想这是很有用的,但现在看来,
plotyy
(或其模拟)是一条出路。谢谢