Как я могу сделать так, чтобы контурный график не перекрывался на линейном графике в одной оси?

#matlab #plot #matlab-guide #axes

#matlab #график #matlab-руководство #оси

Вопрос:

Я создал 2 графика в одной оси с помощью кнопки в руководстве matlab, первый график — линейный график

вот график

http://i1275.photobucket.com/albums/y443/Kaito_Aokage/Capture2_zpsbc76be37.png?t=1403148417

код для линейного графика

 % X
for i = 1.5:7;
    cur_x = i * 3.8;
    line([cur_x, cur_x], [0 5], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% Y
for i = 2:7;
    cur_y = i * 4;
    line([0 4],[cur_y, cur_y], 'color', 'r', 'LineWidth', 1.5);
    drawnow;  
end;

% X2
for i = 1.5:7;
    cur_x2 = i * 3.8;
    line([cur_x2, cur_x2], [25 31], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% Y2
for i = 1:8;
    cur_y2 = i * 3.5;
    line([26 31],[cur_y2, cur_y2], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% X
line( [5.7 cur_x], [5 5], 'color', 'r', 'LineWidth', 1.5);

% Y
line( [4 4], [8 cur_y], 'color', 'r', 'LineWidth', 1.5);

% X2
line( [5.6 cur_x2], [25 25], 'color', 'r', 'LineWidth', 1.5);

% Y2
line( [26 26], [3.5 cur_y2], 'color', 'r', 'LineWidth', 1.5);

handles.axes2;
grid on;
hold on;
axis([0 30 0 30]);
  

а второй график — это контурный график

http://i1275.photobucket.com/albums/y443/Kaito_Aokage/Capture3_zpsfd46dedf.png?t=1403148576

код для контурного графика

 xMove = 3;
yMove = 10;
r = 30;  
rx = -r:0.1:r;
ry = r:-0.1:-r;
[x_coor, y_coor] = meshgrid(rx, ry);
radius = sqrt(x_coor.^2 y_coor.^2);
contourf(x_coor   xMove, y_coor   yMove, radius,'edgecolor','none');
xlabel('Widht');
ylabel('Long');
axis([0 30 0 30]);
colorbar;
caxis([0 10]);
grid on;
handles.axes2;
set(gca,'layer','top');
hold on;
  

Кнопка Floor — это линейный график, а кнопка AP1 — контурный график. Когда я пытаюсь нажать кнопку контурного графика после кнопки линейного графика, линейный график перекрывается контурным графиком. Я хочу, чтобы линейный график не перекрывался контурным графиком, чтобы линейный график можно было увидеть после нажатия кнопки контурного графика. Я уже пытаюсь hold или set(gca,'layer','top) , но он не работает. что мне делать?

Комментарии:

1. Рассмотрите возможность вставки ваших фигур здесь вместо их связывания

Ответ №1:

в каком порядке вы выполняете приведенные выше коды? Сначала я выполнил второй код, затем первый код, и это мой результатвведите описание изображения здесь

Вот весь код, который я выполнил, мне пришлось удалить строку handle.axis2; , поскольку она выдавала ошибку.(Я использую matlab 2011)

 close all
xMove = 3;
yMove = 10;
r = 30;  
rx = -r:0.1:r;
ry = r:-0.1:-r;
[x_coor, y_coor] = meshgrid(rx, ry);
radius = sqrt(x_coor.^2 y_coor.^2);
contourf(x_coor   xMove, y_coor   yMove, radius,'edgecolor','none');
xlabel('Widht');
ylabel('Long');
axis([0 30 0 30]);
colorbar;
caxis([0 10]);
grid on;
set(gca,'layer','top');
hold on;
% X
for i = 1.5:7;
    cur_x = i * 3.8;
    line([cur_x, cur_x], [0 5], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% Y
for i = 2:7;
    cur_y = i * 4;
    line([0 4],[cur_y, cur_y], 'color', 'r', 'LineWidth', 1.5);
    drawnow;  
end;

% X2
for i = 1.5:7;
    cur_x2 = i * 3.8;
    line([cur_x2, cur_x2], [25 31], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% Y2
for i = 1:8;
    cur_y2 = i * 3.5;
    line([26 31],[cur_y2, cur_y2], 'color', 'r', 'LineWidth', 1.5);
    drawnow;
end;

% X
line( [5.7 cur_x], [5 5], 'color', 'r', 'LineWidth', 1.5);

% Y
line( [4 4], [8 cur_y], 'color', 'r', 'LineWidth', 1.5);

% X2
line( [5.6 cur_x2], [25 25], 'color', 'r', 'LineWidth', 1.5);

% Y2
line( [26 26], [3.5 cur_y2], 'color', 'r', 'LineWidth', 1.5);


grid on;

axis([0 30 0 30]);
hold off;
  

Комментарии:

1. спасибо за вашу помощь, сэр, я уже пробовал этот способ, но я хочу выполнить первый код, а затем второй код, возможно ли это?