기본 속성 관리

기본 속성 관리 (Managing Default Properties)

그래프 객체마다 기본으로 쓰이는 속성 값을 미리 정해 두고 싶을 때가 있어요. Octave는 공장 기본값(factory default)과 사용자 정의 기본값(user-defined default) 두 종류를 두고, 이를 계층적으로 관리해요. 이 문서에서 기본값을 어떻게 설정하고, 덮어쓰고, 되돌리는지 살펴볼게요.

출처: 문서

본문

객체 속성에는 두 종류의 기본값이 있어요. 하나는 공장 기본값(초기 값)이고, 다른 하나는 사용자 정의 기본값으로 공장 기본값을 덮어쓸 수 있어요.

기본값은 어떤 객체에나 설정할 수 있지만, 실제로는 상위(부모) 객체에 설정하고 그 값이 지정된 객체 타입의 하위(자식) 객체에 적용돼요. 예를 들어 root 객체에 line 객체의 기본 color 속성을 "green"으로 설정하면, 모든 line 객체가 기본값으로 color "green"을 물려받아요.

set (groot, "defaultlinecolor", "green");

이 코드는 모든 객체의 기본 라인 색을 설정해요. 기본값을 설정하는 속성 이름을 만드는 규칙은 다음과 같아요.

default + object-type + property-name

이 규칙은 때로 이상해 보이는 이름을 만들기도 해요. 예를 들어 defaultlinelinewidthline 객체의 기본 linewidth 속성을 지정해요.

위 예시는 root 객체를 사용했기 때문에 기본 속성 값이 모든 line 객체에 적용돼요. 하지만 기본값은 계층적이에요. figure 객체에 설정한 기본값은 root 객체에 설정한 값을 덮어쓰고, axes 객체에 설정한 기본값은 figure나 root 객체의 값을 덮어써요. 예를 들어 보죠.

subplot (2, 1, 1);
set (groot, "defaultlinecolor", "red");
set (1, "defaultlinecolor", "green");
set (gca (), "defaultlinecolor", "blue");
line (1:10, rand (1, 10));
subplot (2, 1, 2);
line (1:10, rand (1, 10));
figure (2)
line (1:10, rand (1, 10));

이 코드는 figure 두 개를 만들어요. 첫 번째 figure의 첫 번째 subplot 창의 라인은 파란색이에요. 자신의 부모인 axes 객체에서 색을 물려받기 때문이에요. 첫 번째 figure의 두 번째 subplot 창의 라인은 초록색이에요. 부모인 figure 객체에서 색을 물려받기 때문이에요. 두 번째 figure 창의 라인은 빨간색인데, 전역 root 객체에서 색을 물려받기 때문이에요.

사용자 정의 기본값 설정을 제거하려면, 그 기본 속성을 값 "remove"로 설정하면 돼요. 예를 들어 보죠.

set (gca (), "defaultlinecolor", "remove");

이 코드는 현재 axes 객체에서 사용자 정의 기본 라인 색 설정을 제거해요. 모든 사용자 정의 기본값을 한꺼번에 빠르게 제거하려면 reset 함수를 쓰면 돼요.

기본적으로 plot 같은 고수준 플로팅 함수는 기본값과 별개로 axes 속성을 재설정하고 다시 정의해요. 그런 속성의 예가 axes의 box 속성이에요. 고수준 2차원 그래픽스 함수는 "defaultaxesbox" 속성 값과 상관없이 boxon으로 설정해요. 이 동작을 막으려면 hold 함수를 사용하세요.

set (groot, "defaultaxesbox", "off");
subplot (2, 1, 1);
plot (1:10)
title ("Box is on anyway")
subplot (2, 1, 2);
hold on
plot (1:10)
title ("Box is off")

reset — 기본값으로 되돌리기

reset (h)

그래픽 객체 h의 속성을 기본값으로 재설정해요. figure의 경우 "position", "units", "windowstyle", "paperunits" 속성은 영향을 받지 않아요. axes의 경우 "position""units" 속성은 영향을 받지 않아요. 입력 h는 그래픽 핸들의 벡터일 수도 있는데, 그러면 각 객체를 개별적으로 재설정해요. 함께 보면 좋은 함수: cla, clf, newplot.

객체의 "default" 속성을 얻으면 그 객체에 설정된 사용자 정의 기본값 목록이 나와요. 예를 들어 보죠.

get (gca (), "default");

이 코드는 현재 axes 객체에 대한 사용자 정의 기본값 목록을 돌려줘요. 공장 기본값은 root 객체에 저장돼 있어요. 명령

get (groot, "factory");

은 공장 기본값 목록을 돌려줘요.

더 알아보기

  • 객체 속성을 읽고 쓰는 getset 함수를 함께 살펴보세요.
  • cla, clf, newplot 같은 좌표축·figure 관리 함수도 이어서 보면 좋아요.