2011-10-18 4 views
4

두 개의 가로 축이있는 그림을 만들고 싶습니다. 하단 축은 선형이며, 상단 축은 비선형입니다. 변환을위한 데이터 테이블이 있습니다. "아래 값 -> 최고 값". QwtScaleEngine이이 기능을 제공한다는 것을 알았습니다. 하지만 QwtScaleEngine 및 QwtScaleDiv의 하위 클래스에서 정의하기에 너무 많은 문서화 된 함수가 너무 많아서 제대로 작동하지 않습니다.QwtPlot 사용자 지정 축

제안 사항?

답변

1

두 개의 가로 축이 축을 공유하는 두 개의 플롯을 효과적으로 오버레이 시키거나 첫 번째 가로 축의 추가 표현 (예 : 다른 단위)을 제공 하시겠습니까? 그 모든 것이 관련이 없을 수도 있습니다. 나는 단지 당신의 문제를 이해하려고 노력하고 있습니다.

나는 먼저 QwtPlot::updateAxes() documentation을 살펴볼 것을 권한다. 그것은 공식 Qwt 문서에서 플롯, 스케일 엔진 및 스케일 분할 간의 관계에 대해 가장 잘 설명합니다. 나는 Qwt가 잘못 문서화되었다고 생각하지 않지만, 개념에 대한 높은 수준의 설명이 부족하다고 생각한다.

QwtScaleDiv 축 유형 및 틱 값이 포함될 수있는 컨테이너 유형이 더 있습니다. QwtScaleDiv을 서브 클래스 화하는 것이 필요하다는 것을 알 수 없습니다.

QwtScaleEngine이이 변환에 포함되어 있지만 적어도 Qwt 6.1.0에는 약간 더 많은 내용이 포함되어 있습니다. QwtScaleEnginesetTransformation()의 변환 개념 (QwtTransform)을 지원합니다. 변환이 대수, 지수, 2 차, 3 차 함수 등의 간단한 수학 함수 인 경우 QwtPowerTransform 또는 QwtLogTransform을 사용할 수 있어야합니다. 해당 사항이 없으면 직접 QwtTransform을 구현하고 QwtScaleEngine에 할당 할 수 있습니다. 내가 아는 한 변환은 양방향이어야합니다. 즉, transforminvTransform을 모두 구현해야합니다. 내 경험상 그리드 라인, 영역 등을 포함하여 축척 엔진이 연관된 축과 관련된 모든 플롯 항목의 값을 변환해야합니다. 기본값 인 QwtLinearScaleEngine보다 다른 축척 엔진에서 변형을 사용하지는 않았지만 작동했습니다 큰. 그것은 강력한 개념입니다. 또한 SVN playground (6.1.0)에서 scaleengine 예제를 살펴보십시오.

관련 문제