2016-03-07 7 views
0

В настоящее время я работаю над графическим интерфейсом. Я хотел бы иметь одну «оси», на которой я могу отображать несколько графиков, в зависимости от того, какой пользователь выбирает. В настоящее время у меня есть 2 бар-сюжета и 2 участка surfc. Я устанавливаю графики с использованиемСбрасывание осей после перемещения участков вокруг?

set(p1, 'Parent', axes1) 

Однако он выглядит, когда я установил бар участок на оси, которые имели surfc есть еще Аз оси, и та же самая проблема существует другой путь вокруг, но wuth отсутствия ось az. Эти примеры скриптов демонстрируют.

figure(1); 
a1 = axes(); 
p1 = bar(1:5); 

figure(2); 
a2 = axes(); 
x = [1 2]; 
z = zeros(2); 
p2 = surfc(x, x, z); 

set(p1, 'Parent', a2) 
set(p2, 'Parent', a1) 

Каков наилучший способ для этого?

ответ

1

Если вы работаете только с одиночными осями, то вы можете изменить view при переходе от 3D (для surfc участка) в 2D (на bar участке).

% Default 2D View 
view(hax, 2); 

% Default 3D View 
view(hax, 3); 

Если вы позволяя пользователю переключаться между ними, может быть стоит не используя 2D и 3D просмотра по умолчанию, а в вашей кнопки мыши обратного вызова, сохранить текущий вид в переменной, а затем когда они возвращаются к сюжету, он сохраняет любую пользовательскую точку зрения, которую пользователь применял. Вы можете получить текущую точку зрения следующим:

[az, el] = view(hax); 

Мини-декламация

Кроме того, в целом, лучше назначить родитель вашего участка объектов по строительству. Большинство конструкторов графических объектов принимают пару параметров/значений Parent. Это намного более устойчиво, потому что тогда сюжетный объект никогда не рисуется в неправильные топоры.

fig1 = figure(); 
ax1 = axes('Parent', fig1); 
p1 = bar(1:5, 'Parent', ax1); 

fig2 = figure(); 
ax2 = axes('Parent', fig2); 
p2 = surfc([1 2], [1 2], zeros(2), 'Parent', ax2); 

При работе с графикой MATLAB, я всегда счел полезным, чтобы быть четко о родителю при создании осей, графики и другие графические объекты. Никогда не полагайтесь на gca, gcf и т. Д., Поскольку все это изменяется, если пользователь каким-то образом посещает центр рендеринга.

+0

Да, но у меня есть место для «одних» осей на моем gui. В настоящее время я размещаю оси с направляющей, а затем переключаю сюжет на оси, когда пользователь нажимает кнопку. Я думаю, что меня ограничивают только одну ось, так что это мало помогает. Также он чувствует себя неправильно, говоря одну ось, но вы получаете идею, я думаю, один набор осей – Shatnerz

+0

@Shatners Обновлен ответ. – Suever

 Смежные вопросы

  • Нет связанных вопросов^_^