MATLAB:在主要和次要y轴之间切换的更好方法是什么?

时间:2015-09-04 20:52:49

标签: matlab plot bar-chart axis axes

我知道plotyy,但在我看来,它并不像输入subplot(2,3,1)那样直观,而且从那时起,在那个特定的子情节环境中工作......

假设我有以下数据:

a=rand(20,1);
a_cumul=cumsum(a);

我想在主要(左手)y轴上执行plot a_cumul,在次要(右手)y轴上执行a的条形图

我很清楚我能做到:

plotyy(1:length(a_cumul),a_cumul,1:length(a),a,'plot','bar')

但是这很麻烦,如果我想例如仅绘制到辅助y轴并且不绘制到主y轴怎么办?简而言之,我正在寻找这样的解决方案是否存在:

figure;
switchToPrimaryYAxis; % What to do here??
plot(a_cumul);
% Do some formatting here if needed...
switchToSecondaryYAxis; % What to do here??
bar(a);

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

基本上plotyy

  • 创建两个叠加的axes

  • 绘制指定为第一轴上前两个参数的数据

  • 绘制指定为第二轴上最后两个参数的数据

  • 将第二个第二轴颜色设置为none,使其变为“#34;透明"所以允许在第一轴上看到图形

  • yaxislocation从标准位置(左)移至右侧

您可以创建一个figure,然后两个axes在两个plot上制作任意axes,然后选择axes(h) h }是轴的处理程序。

然后你可以编写一个自己的功能来执行轴调整。

创建figureaxes并调用函数调整轴的脚本

% Generate example data
t1=0:.1:2*pi;
t2=0:.1:4*pi;
y1=sin(t1);
y2=cos(t2);
% Create a "figure"
figure
% Create two axes
a1=axes
a2=axes
% Set the first axes as current axes
axes(a1)
% Plot something
plot(t1,y1,'k','linewidth',2)
% Set the second axes as current axes
axes(a2)
% Plot something
plot(t2,y2,'b','linewidth',2)
grid
% Adjust the axes:
my_plotyy(a1,a2)

调整轴的功能 - 模拟情节行为

该功能需要两个轴的手柄作为输入

function my_plotyy(a1,a2)

set(a1,'ycolor',[0 0 0])
set(a1,'box','on')
% Adjust the second axes:
%    change x and y axis color
%    move x and y axis location
%    set axes color to none (this make it transparend allowing seeing the
%       graph on the first axes

set(a2,'ycolor','b')
set(a2,'xcolor','b')
set(a2,'YAxisLocation','right')
set(a2,'XAxisLocation','top')
set(a2,'color','none')
set(a2,'box','off')

enter image description here

希望这有帮助。