주요 콘텐츠

copyobj

그래픽스 객체와 그 자식 복사

    설명

    newobj = copyobj(obj,parent)는 지정된 그래픽스 객체의 복사본을 만들고 이를 지정된 새 부모에 할당한 다음 새 객체를 반환합니다. obj에 자식이 있으면 copyobj는 그 자식도 복사합니다.

    copyobj는 콜백 속성이나 원래 객체와 연결된 애플리케이션 데이터를 포함하여 원래 컨텍스트를 따르는 속성이나 자식 객체는 복사하지 않습니다. 자세한 내용은 복사되지 않는 항목 항목을 참조하십시오.

    예제

    newobj = copyobj(obj,parent,"legacy")는 객체 콜백 속성과 객체 애플리케이션 데이터를 추가로 복사합니다. 이 동작은 R2014b 전의 copyobj 기능과 일치합니다.

    예제

    모두 축소

    동시에 두 각도에서 플롯을 보려면 surface 객체를 다른 Figure의 새 좌표축에 복사합니다.

    surface 객체를 만듭니다.

    obj = surf(peaks);

    Figure contains an axes object. The axes object contains an object of type surface.

    새 Figure와 좌표축을 만듭니다. 그런 다음 surface 객체의 복사본을 만들고 이를 새 좌표축에 할당합니다. 카메라의 시선을 방위각 60도와 고도 30도로 설정하여 새 플롯의 보기를 변경합니다. surface 객체와 함께 복사되지 않은 원래 Figure 구성과 일치하도록 그리드를 켭니다.

    fig = figure;
    ax = axes;
    newobj = copyobj(obj,ax);
    view(ax,60,30)
    grid(ax,"on")

    Figure contains an axes object. The axes object contains an object of type surface.

    유사한 플롯을 여럿 생성한 후 첫 번째 플롯의 text 객체와 line marker 객체를 각각의 다른 플롯에 복사하여 각 플롯의 동일한 데이터 점에 레이블을 지정합니다.

    첫 번째 플롯을 생성하고 text 객체와 line marker 객체를 사용하여 이 플롯에 레이블을 지정합니다.

    x = 0:.1:2*pi;
    y = sin(x);
    plot(x,y)
    title("Sine Plot")
    t = text(5*pi/4, -sqrt(2)/2, "\{5*pi/4,-sqrt(2)/2\}\rightarrow", ...
       "HorizontalAlignment","right");
    lm = xline(5*pi/4);

    Figure contains an axes object. The axes object with title Sine Plot contains 3 objects of type line, text, constantline.

    레이블 없이 두 번째 플롯을 생성하고 text 객체와 line marker 객체(tlm)를 새 좌표축에 할당하여 플롯에 복사합니다. text 객체와 line marker 객체의 복사본을 반환합니다.

    figure
    x = pi/4:.1:9*pi/4;
    plot(x,cos(x))
    title("Cosine Plot")
    ax2 = gca;
    ax2.Color = [0.902 0.902 0.902]; % light gray
    lbl2 = copyobj([t,lm],ax2);

    Figure contains an axes object. The axes object with title Cosine Plot contains 3 objects of type line, constantline, text.

    여러 Figure의 객체를 타일 형식 차트 레이아웃을 사용하는 하나의 Figure로 복사합니다.

    사인 플롯을 포함하는 첫 번째 Figure를 생성합니다.

    f1 = figure;
    ax1 = axes(f1);
    plot(ax1,sin(1:10))

    Figure contains an axes object. The axes object contains an object of type line.

    4개의 플로팅된 선과 범례가 포함된 두 번째 Figure를 생성합니다.

    f2 = figure;
    ax2 = axes(f2);
    plot(ax2,magic(4));
    lgd = legend(ax2);

    Figure contains an axes object. The axes object contains 4 objects of type line.

    타일 형식 차트 레이아웃이 있는 세 번째 Figure를 생성하고 첫 번째와 두 번째 Figure의 플롯과 범례를 세 번째 Figure의 타일에 복사합니다.

    f3 = figure;
    t = tiledlayout(f3,2,1);
    
    ax1c = copyobj(ax1,t);
    ax2c = copyobj([ax2,lgd],t);
    ax1c(1).Layout.Tile = 1;
    ax2c(1).Layout.Tile = 2;

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains 4 objects of type line.

    타일 형식 차트 레이아웃의 여러 타일의 객체를 여러 개의 Figure에 복사합니다.

    두 개의 플롯이 있는 2×1 타일 형식 차트 레이아웃을 포함하는 Figure를 생성합니다. 첫 번째 타일은 사인 플롯을 포함하고 두 번째 타일은 4개의 플로팅된 선을 포함합니다.

    f = figure;
    t = tiledlayout(f,2,1);
    
    ax1 = nexttile(t);
    plot(ax1,sin(1:10))
    
    ax2 = nexttile(t);
    plot(ax2,magic(4))

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains 4 objects of type line.

    새 Figure를 만들고 첫 번째 타일의 좌표축을 새 Figure에 복사합니다. 좌표축이 전체 Figure를 채우도록 하려면 좌표축의 위치를 다시 디폴트 값으로 재설정합니다.

    f1 = figure;
    ax1c = copyobj(ax1,f1);
    set(ax1c,"OuterPosition","default");

    Figure contains an axes object. The axes object contains an object of type line.

    다른 새 Figure를 만들고 두 번째 타일의 좌표축을 새 Figure에 복사합니다. 좌표축이 전체 Figure를 채우도록 하려면 좌표축의 위치를 다시 디폴트 값으로 재설정합니다.

    f2 = figure;
    ax2c = copyobj(ax2,f2);
    set(ax2c,"OuterPosition","default")

    Figure contains an axes object. The axes object contains 4 objects of type line.

    여러 사용자 인터페이스 컨트롤을 포함하는 패널을 한 Figure에서 다른 Figure로 복사합니다.

    Figure와 이 Figure 내에 위치한 패널을 만듭니다. 그런 다음 패널 내에 두 개의 라디오 버튼을 만들고 값을 설정합니다.

    f1 = figure;
    p1 = uipanel(f1,"Position",[0.1 0.1 0.35 0.65]);
    rb1 = uicontrol(p1,"Style","radiobutton","String","Option 1", ...
        "Position",[10 50 100 22]);
    rb2 = uicontrol(p1,"Style","radiobutton","String","Option 2", ...
        "Position",[10 28 100 22]);
    p1.Children(1).Value = 0;
    p1.Children(2).Value = 1;

    Figure contains an object of type uipanel.

    배경이 더 어두운 새 Figure를 만들고 첫 번째 Figure의 패널을 두 번째 Figure에 복사합니다. 그런 다음 두 번째 Figure의 라디오 버튼 값을 변경합니다.

    f2 = figure;
    f2.Color = [0.902 0.902 0.902];
    p2 = copyobj(p1,f2);
    p2.Children(1).Value = 1;
    p2.Children(2).Value = 0;

    Figure contains an object of type uipanel.

    입력 인수

    모두 축소

    복사할 그래픽스 객체로, 단일 객체 또는 객체로 구성된 벡터로 지정됩니다.

    참고

    copyobj에 대한 단일 호출에서 동일한 객체를 동일한 부모로 두 번 이상 복사할 수 없습니다.

    복사된 객체의 부모로, 단일 객체 또는 객체로 구성된 벡터로 지정됩니다. 부모는 복사된 객체에 적합해야 합니다. 예를 들어, 선은 좌표축에 복사할 수 있지만 Figure나 패널에는 복사할 수 없습니다.

    출력 인수

    모두 축소

    그래픽스 객체의 복사본으로, 단일 객체 또는 객체로 구성된 벡터로 반환됩니다.

    • obj가 단일 객체이고 parent가 단일 객체인 경우 newobj는 단일 객체입니다.

    • obj가 단일 객체이고 parent가 객체로 구성된 벡터인 경우 newobj는 객체로 구성된 벡터입니다. 각 newobj(i)는 부모 parent(i)에 할당된 obj의 복사본입니다. newobj의 길이는 parent의 길이와 같습니다.

    • obj가 객체로 구성된 벡터이고 parent가 단일 객체인 경우 newobj는 객체로 구성된 벡터입니다. 각 newobj(i)는 부모 parent에 할당된 obj(i)의 복사본입니다. newobj의 길이는 obj의 길이와 같습니다.

    • objparent가 둘 다 객체로 구성된 벡터인 경우 길이가 같아야 하고 newobj는 길이가 동일한, 객체로 구성된 벡터여야 합니다. 각 newobj(i)는 부모 parent(i)에 할당된 obj(i)의 복사본입니다.

    복사된 객체는 원래 객체와 다릅니다. 따라서 ==는 두 객체를 비교할 때 false를 반환합니다. 자세한 내용은 복사되지 않는 항목 항목을 참조하십시오.

    세부 정보

    모두 축소

    • legend나 colorbar를 복사할 때는 연관 좌표축도 복사해야 합니다.

    • 사용자 인터페이스를 빌드할 때 생성 함수 내에서 copyobj 또는 (copyobj를 호출하는)textwrap을 호출해서는 안 됩니다. 사용자 인터페이스 컨트롤 객체를 복사하면 생성 함수가 반복적으로 호출되어 재귀 제한을 초과하며, 이로 인해 오류가 발생합니다.

    버전 내역

    R2006a 이전에 개발됨

    참고 항목

    함수