Matlab,在网格后面添加彩色字段

时间:2015-08-13 19:53:02

标签: matlab-figure

我想在我的情节中标记某些区域,我已使用rectangle解决了这些问题。现在的问题是我还希望打开网格,但这是由矩形覆盖的。有没有办法为背景的不同区域着色或让网格向前移动,以便将其绘制在矩形上方?

我的代码如下所示:

rectangle('Position', [0 0.46 3*l+1 1.6], 'FaceColor', bg2);
rectangle('Position', [0 0.6 3*l+1 1.6], 'FaceColor', bg);
hold on
grid on
plot(Isr(:, 2), abs(Isr(:, 1)), 'r');
plot(Isx(:, 2), abs(Isx(:, 1)), 'b');
title('Current');
axis([0 3*l 0 1.6]);
legend(Legend);
xlabel('$k$');
ylabel('$I_F/I_{3\Phi}$');

这是一个最小的例子:

l = 10;
x = linspace(0,l);

rectangle('Position', [0 0.46 l+1 1.6], 'FaceColor', 'm');
rectangle('Position', [0 0.6 l+1 1.6], 'FaceColor', 'g');
hold on
grid on
plot(x, sin(x), 'r');
plot(x, cos(x), 'b');
axis([0 l 0 1.6]);
legend('Sine', 'Cosine');

1 个答案:

答案 0 :(得分:3)

您应该可以通过修改Layer property of your axes来完成此操作,这会修改与图形对象相关的网格线和刻度线的位置:

l = 10;
x = linspace(0,l);

myax = axes;
rectangle('Position', [0 0.46 l+1 1.6], 'FaceColor', 'm');
rectangle('Position', [0 0.6 l+1 1.6], 'FaceColor', 'g');
hold on
grid on
plot(x, sin(x), 'r');
plot(x, cos(x), 'b');
axis([0 l 0 1.6]);
legend('Sine', 'Cosine');
myax.Layer = 'top';

请注意,我还添加了一个axes调用来给我一个轴的句柄。在gca set使用example时,可以实现相同的行为:set(gca, 'Layer', 'top');

{{3}}