在子图中设置两个y轴颜色

时间:2017-07-23 14:21:40

标签: matlab plot matlab-figure axis subplot

在matlab文档中,它表示可以通过执行以下操作在两个y轴图形中更改Matlab轴颜色:

fig = figure;
left_color = [.5 .5 0];
right_color = [0 .5 .5];
set(fig,'defaultAxesColorOrder',[left_color; right_color]);

y = [1 2 3; 4 5 6];
yyaxis left
plot(y)

z = [6 5 4; 3 2 1];
yyaxis right
plot(z)

这可以工作并产生所需的输出。

enter image description here

现在我试图在一个子图中做同样的图。我的代码如下:

fig = subplot(2,1,1);
left_color = [.5 .5 0];
right_color = [0 .5 .5];
set(fig,'defaultAxesColorOrder',[left_color; right_color]);

y = [1 2 3; 4 5 6];
yyaxis left
plot(y)

z = [6 5 4; 3 2 1];
yyaxis right
plot(z)

enter image description here

但是,这里不会改变轴的颜色。有关如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:2)

你的fig是一个轴的句柄,而不是图:

fig = subplot(2,1,1);

但是,当您设置'defaultAxesColorOrder'属性时,您将其设置为其中所有轴的图形级别,如the docs中所述:

  

在图形级别设置默认值,以便新颜色仅影响图fig的子项轴。

修复它需要做的就是将fig定义为图形,并在设置'defaultAxesColorOrder'属性后移动subplot命令:

fig = figure;  %<-- you change here
left_color = [.5 .5 0];
right_color = [0 .5 .5];
set(fig,'defaultAxesColorOrder',[left_color; right_color]);

subplot(2,1,1) %<-- and add that
y = [1 2 3; 4 5 6];
yyaxis left
plot(y)

z = [6 5 4; 3 2 1];
yyaxis right
plot(z)

enter image description here