在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)
这可以工作并产生所需的输出。
现在我试图在一个子图中做同样的图。我的代码如下:
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)
但是,这里不会改变轴的颜色。有关如何做到这一点的任何想法?
答案 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)