이 페이지에서

Qt Graphs 3D 개요

Qt Graphs 모듈은 학술 연구 및 의료와 같이 분석적 요구가 높은 산업 분야를 위해 반응 속도가 빠르고 복잡하며 동적인 3D 그래프를 개발할 수 있는 방법을 제공합니다. Qt Graphs 은 3D 막대 그래프, 산점도 그래프 및 표면 그래프를 제공합니다. 사용자 상호작용과 실시간 3D 그래프 그리기를 결합함으로써 공간을 효과적으로 활용하는 사용자 인터페이스를 만들 수 있습니다. 3D와 2D 표시 방식을 전환함으로써 데이터 시각화에서 3D의 가치를 진정으로 활용할 수 있습니다.

사전 정의된 테마를 사용하거나 새로운 테마를 정의하여 그래프의 모양과 느낌을 사용자 정의할 수 있습니다. 또한 카메라 설정을 지정하여 장면을 사용자 정의할 수 있으며, 사전 정의된 메쉬나 사용자 정의 메쉬를 사용하여 개별 항목을 사용자 정의할 수 있습니다.

Qt Graphs Qt 항목 모델 및 높이 맵의 데이터를 시각화하는 데 사용할 수 있는 기성 데이터 프록시를 제공합니다. 각 그래프 유형에는 해당 그래프에 적합한 형식의 데이터를 수용하는 기본 프록시 유형이 있습니다. 자세한 내용은 Qt Graphs Data Handling with 3D를 참조하십시오.

최종 사용자는 그래프 회전, 데이터 확대/축소, 항목 선택, 가독성 향상을 위한 3D 데이터의 2D 단면 보기 등 다양한 방법으로 그래프에 표시된 데이터와 상호 작용할 수 있습니다. 자세한 내용은 Qt Graphs 3D에서 데이터와 상호 작용을 참조하십시오.

그래프 유형

Qt Graphs 모듈은 다음과 같은 3D 그래프 유형을 제공합니다:

Q3DGraphsWidgetItem 클래스는 막대, 산점도, 표면 등 다양한 그래프 유형을 구현하는 자체 하위 클래스인 Q3DBarsWidgetItem, Q3DScatterWidgetItem 및 Q3DSurfaceWidgetItem 에 대한 위젯 API를 제공합니다. 그래프 유형에 따라 데이터가 표시되는 방식이 결정됩니다.

모든 렌더링은 ` QQuickGraphsItem`에서 이루어지며, 이 클래스는 ` QQuick3DViewport`을 상속받고, ` `은 ` QtQuick3D`을 사용하여 ` View3D `를 제공합니다. 이 클래스에는 ` Bars3D`, ` Scatter3D`, ` Surface3D`에 대한 자체 하위 클래스가 있습니다.

3D 막대 그래프

3D 막대 그래프는 데이터를 범주별로 그룹화된 3D 막대 형태로 표시합니다. Q3DGraphsWidgetItem 클래스는 그래프를 생성하는 데 사용됩니다. QBar3DSeries 및 QBarDataProxy 클래스는 그래프에 데이터를 설정하고, 그리기 모드나 음영 처리와 같은 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 이에 해당하는 유형은 Bars3D, Bar3DSeries 및 BarDataProxy 입니다.

높이가 각기 다른 녹색 막대가 있는 3D 막대 그래프

자세한 내용은 How to construct a minimal Q3DBarsWidgetItem graph 및 간단한 막대 그래프 예제를 참조하십시오.

3D 산점도

3D 산점도는 데이터를 점의 집합이나 스플라인 형태로 표시합니다. Q3DScatterWidgetItem 클래스는 그래프를 생성하는 데 사용됩니다. QScatter3DSeries, QSpline3DSeries 및 QScatterDataProxy 클래스는 그래프에 데이터를 설정하고 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 이에 해당하는 유형은 Scatter3D, Scatter3DSeries, Spline3DSeries 및 ScatterDataProxy 입니다.

초록색 구가 표시된 3D 산점도

자세한 내용은 How to construct a minimal Q3DScatterWidgetItem graph 및 ‘Simple Scatter Graph’ 예제를 참조하십시오.

3D 표면 그래프

3D 표면 그래프는 데이터를 3D 표면 플롯으로 표시합니다. Q3DSurfaceWidgetItem 클래스는 그래프를 생성하는 데 사용됩니다. QSurface3DSeries 및 QSurfaceDataProxy 클래스는 그래프에 데이터를 설정하고 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 이에 해당하는 유형은 Surface3D, Surface3DSeries 및 SurfaceDataProxy 입니다.

경사진 녹색 평면이 포함된 3D 표면 그래프

자세한 내용은 How to construct a minimal Q3DSurfaceWidgetItem graph, 그래프 갤러리 및 서피스 그래프 갤러리 예제를 참조하십시오.

데이터 렌더링에 OpenGL ES 사용

Qt Graphs 은 QtQuick3D 을 기반으로 하며, 이는 Qt Graphs 가 렌더링을 위해 대상 플랫폼의 네이티브 백엔드를 사용함을 의미합니다. 그러나 OpenGL ES3이나 Vulkan과 같이 OpenGL ES2보다 상위 버전을 지원하지 않는 대상 플랫폼에서 OpenGL ES2가 사용될 경우, 다음 기능은 지원되지 않습니다:

렌더링 모드 선택

QML에서는 GraphsItem3D.RenderingMode 속성을 설정하여 그래프를 창 배경에 직접 렌더링할지, 아니면 일반 QML 항목 렌더링 중에 그려지는 오프스크린 표면에 렌더링할지 결정할 수 있습니다.

배경 렌더링 모드는 간접 렌더링 모드보다 성능이 약간 우수하지만, 그 대가로 비표준 QML 동작이 발생합니다. 예를 들어, 그래프는 앤티앨리어싱을 지원하지 않습니다. 따라서 렌더링 모드 변경은 성능과 품질 사이의 절충 문제입니다.

Qt Quick 는 데이터 렌더링을 위해 전용 씬그래프를 사용하므로, 그래프에 가장 적합한 선택입니다.

3D 축

Qt Graphs 다음과 같은 축 유형을 지원합니다:

  • 값 축
  • 범주 축

축은 선이나 격자 형태로 표시되도록 설정할 수 있습니다. 두 축 유형 모두 ` QAbstract3DAxis ` 클래스 또는 ` Abstract3DAxis ` QML 유형의 특화 형태입니다.

값 축의 경우, 값의 범위와 해당 범위를 나누는 세그먼트 및 하위 세그먼트 수를 설정할 수 있습니다. 기본적으로 각 세그먼트 사이에 레이블이 그려집니다. 또한 기본적으로 각 세그먼트와 하위 세그먼트 사이에 격자선이 그려집니다. 값 축은 QValue3DAxis 클래스 또는 Value3DAxis QML 유형을 사용하여 구현됩니다.

범주 축은 이름이 지정된 범위와 조정 가능한 범위 너비를 가집니다. 이 축은 축 범위로 정의된 데이터 창 크기를 기준으로 동일한 크기의 범주로 나뉩니다. 레이블이 제공된 경우, 기본적으로 범주 위치에 레이블이 그려집니다. 기본적으로 범주 사이에는 격자선이 그려집니다. 범주 축은 QCategory3DAxis 클래스나 Category3DAxis QML 유형을 사용하여 구현됩니다.

그래프에 축이 명시적으로 설정되지 않은 경우, 레이블이 없는 임시 기본 축이 생성됩니다. 이러한 기본 축은 축 액세서를 통해 수정할 수 있지만, 특정 방향에 대해 축이 명시적으로 설정되는 즉시 해당 방향의 기본 축은 삭제됩니다.

모든 그래프 유형은 여러 시계를 동시에 표시할 수 있습니다. 모든 시계가 동일한 행과 열 수를 포함할 필요는 없습니다. 행 및 열 레이블은 행 및 열 축에 대해 명시적으로 정의되지 않은 경우, 가장 먼저 추가된 시계에서 가져옵니다.

축 포맷터를 사용하여 값 축의 격자선과 레이블을 사용자 정의할 수 있습니다. ` QValue3DAxisFormatter ` 클래스와 ` Value3DAxisFormatter ` QML 유형은 선형 값 3D 축에 대한 서식 지정 규칙을 제공합니다. ` QLogValue3DAxisFormatter ` 클래스와 ` LogValue3DAxisFormatter ` QML 유형은 로그 값 3D 축에 대한 서식 지정 규칙을 제공합니다.

polar 속성을 설정하면 표면 그래프 및 산점도 그래프에 극좌표 수평축을 사용할 수 있습니다. 막대 그래프에도 이 속성을 설정할 수 있지만, 설정 시 경고 메시지가 표시되며 해당 설정은 무시됩니다.

3D 장면 사용자 정의

Qt Graphs 는 QtQuick3D 를 기반으로 구축되었으므로, QtQuick3D 장면을 Qt Graphs 장면에 통합할 수 있습니다. 자세한 내용은 Qt Graphs 의 ‘ Qt Quick 3D와의 통합’을 참조하십시오.

항목 사용자 지정

Qt Graphs 에는 막대 및 산점도 항목을 위한 미리 정의된 메쉬 유형이 있습니다. 메쉬 유형은 그래프에서 막대 또는 산점도 항목이 어떻게 표시될지 결정합니다. 또한 사용자 정의 지오메트리를 메쉬 파일로 지정할 수도 있습니다. 자세한 내용은 QAbstract3DSeries::userDefinedMesh()를 참조하십시오. 더 다양한 표현을 위해 메쉬 회전을 위한 쿼터니언을 설정할 수 있습니다.

개별 항목을 사용자 정의하는 것 외에도, QCustom3DItem 클래스나 Custom3DItem QML 유형을 사용하여 그래프에 사용자 정의 항목을 추가할 수 있습니다. 이러한 항목은 사용자 정의 메쉬, 위치, 크기 조정, 회전 및 선택적 텍스처를 갖습니다.

QCustom3DVolume 클래스와 Custom3DVolume QML 유형을 사용하여 그래프에 추가할 볼륨 렌더링 개체를 생성할 수 있습니다. 볼륨 렌더링 개체는 3D 텍스처가 적용된 상자입니다. 볼륨에 대해 세 개의 단면 평면이 지원되며, 각 평면은 볼륨의 주요 축을 따라 하나씩 위치합니다.

QCustom3DLabel 클래스와 Custom3DLabel QML 유형은 지정된 텍스트, 글꼴, 위치, 크기 조정 및 회전을 가진 사용자 정의 레이블을 구현합니다. 활성 테마에 따라 레이블의 색상, 테두리 및 배경이 결정됩니다.

사용자 정의 입력 처리

Qt Graphs 는 선택, 회전, 확대/축소와 같은 일반적인 동작에 대한 기본 입력 핸들러를 구현합니다. 기본 핸들러 대신 사용자 정의 입력 핸들러를 구현하려면 필요한 입력 신호를 재정의하십시오.

onTapped: {
    // Disable the default input handler
    unsetDefaultTapHandler()
    // Implement own custom event handler
    console.log("Custom tap event handler")
}

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.