2012-07-18 2 views
2

3 축 구성 요소가있는 Matlab GUI가 있습니다. 태그는 predicted_ax, cost_axerror_ax입니다. 첫 번째 축 구성 요소 (태그 predicted_ax이있는 특정 위치)에 수직선을 그립니다. 어떻게해야합니까?Matlab GUI에서 축에 수직선을 그리는 방법은 무엇입니까?

나는이 코드를 시도 :

ylim = get(handles.predicted_ax, 'ylim'); 
line([linePos, linePos], ylim); 

을하지만 다른 축에 선 (태그 error_ax와 사람)을 그립니다! 태그 나 축 구성 요소를 혼동하지 않았 음을 확신합니다. 사실에 다른 테스트

ylim = get(handles.cost_ax, 'ylim'); 
line([linePos, linePos], ylim); 

정확하게 동일한 결과를 제공한다 : 광고가 태그 error_ax와 마지막 축 성분에 묘화된다. 그러면 어떻게하면 오른쪽 축에 선을 그립니 까?

답변

3

를 기본적으로 항상 현재의 축이 될 것과 같이, 라인의 '부모'속성을 설정해야합니다

h = line([linePos, linePos], ylim); 
set(h, 'parent', handles.predicted_ax); 
+0

이것은 가장 좋은 답변입니다. 모든 행에는 부모 축이 있습니다. axis 핸들을 사용하여 line() 함수를 제공하지 않으면 기본적으로 선을 "현재"축에 연결합니다. 그것이 축 (handles.predicted_ax)이 작동하는 이유입니다. 그것은 predict_ax를 현재 축으로 만들고 이후에 만드는 모든 행에는 기본 부모로 포함됩니다. 그러나 선의 'Parent'속성을 부착하려는 축으로 설정하는 것이 훨씬 더 명확하다고 느낍니다. 일반적으로 사용 가능한 옵션이 명확 할 때 현재 축 (gca) 또는 현재 숫자 (gcf)를 사용하는 것이 좋습니다. – cholland

+2

부 주석으로. 'line ([linePos, linePos], ylim, 'Parent', handles.predicted_ax)' – cholland

+0

@cholland 효과가 있다면 가장 좋은 답이 될 것입니다. 그러나 그렇지 않습니다. – drasto

1

axes 명령을 사용하여 선을 그릴 현재 축을 설정해야한다고 생각합니다. line 명령 전에 axes(handles.predicted_ax);을 시도하십시오.

(축에 대한 ylim 값을 얻는 것은 분명히 현재하지 않습니다.)

+0

+1 감사합니다. – drasto