본문 바로가기
Data Analysis/Spotfire

[Spotfire Q&A] 다수 차트 축 구간 동시 변경

by 불탄오징어 2022. 2. 6.
반응형

 

 

 

 

 

현생이 좀 많이 바쁘다보니 오랜만에 글을 올려봅니다. 질문에 대해서 글을 올려야할 것 들이 좀 있었던거 같은데 여유가될 때 조금씩 다시 써보려고 합니다. 

 

질문 주신 의도에 맞는 답인지는 모르겠으나 다음과 같은 예제를 준비해봤습니다.

다수의 Chart가 존재할 때 각 Chart의 축의 range를 동시 변경하는 예제입니다. 대표적으로 Barchart와 Linechart는 Y축(YAxis)에 수치형 값을 놓을 수 있는데 기본적으로는 Automatic으로 설정되어있습니다. Chart의 Properties로 들어가서 수동으로 설정이 가능한데 그것을 IronPython Script로 지정한다고 보면 됩니다.

 

 

위의 이미지에서 보면 좌측 Text Area에 간단한 입력 폼을 만들어두었습니다. 최소값과 최대값을 입력받을 수 있으며 축변경 버튼을 클릭하게 되면 오르쪽의 4개 차트의 축의 Range가 동시 변경됩니다.

 

from Spotfire.Dxp.Application.Visuals import *
from System.Collections.Generic import List

AxisMin = Document.Properties["최소"]		# Property로 등록한 최소값 가져오기
AxisMax =  Document.Properties["최대"]		# Property로 등록한 최대값 가져오기

for page in Document.Pages:			# 전체 페이지 가져오기
	if page.Title == "Page":		# 특정 페이자만 적용하고자 할 경우
		for vis in page.Visuals:	# 특정 페이지에 포함된 모든 시각화 가져오기
			#print str(vis.TypeId)
			if str(vis.TypeId) == "TypeIdentifier:Spotfire.BarChart" or str(vis.TypeId) == "TypeIdentifier:Spotfire.LineChart":
				
				vc = vis.As[VisualContent]()
				vc.YAxis.Range = AxisRange(AxisMin,AxisMax);

 

위의 Script는 축변경 버튼에 적용된 Ironpython script입니다. Document.Properties로 등록된 값들을 가져온 후 파일안에서 모든 시각화를 체크합니다. 이때 LineChart이거나 또는 BarChart인 경우 해당 시각화의 축을 변경합니다.

 

example1.dxp
2.45MB

 

 

다음 내용을 참조했습니다.

https://stackoverflow.com/questions/27627733/set-spotfire-graph-axis-range-programatically

댓글