2014-12-23 21 views
1

간단한 IronPython 스크립트를 프로그래밍하여 속성 컨트롤 사용자 입력을 기반으로 Spotfire에서 내 선 그래프 x 축의 날짜 범위를 설정하려고합니다. 그래서 여기에 내가 짐작 무슨이의 모든 문서 또는 예제를 찾을 수는 없지만, 제대로 동작하지 않습니다 :프로그래밍 방식으로 스팟 파이어 그래프 축 범위 설정

from Spotfire.Dxp.Application.Visuals import LineChart 
from Spotfire.Dxp.Application.Visuals import ScaleAxis 

plot1= plot1.As[LineChart]() 
plot1.XAxis.Min = StartDate 
plot1.XAxis.Max = EndDate 

나는 시각화 및 스크립트 편집 창에서 스크립트 매개 변수와 속성 제어에 들어갔다. 아무도이 작품을 만드는 방법을 알고 있습니까 ?? 감사!

참고 : 확대/축소 슬라이더를 사용하고 싶지 않습니다.


업데이트 : 나는 OVER 합계를 ([칼럼]) (AllPrevious ([날짜])) 그래서 Y의 계산에 어떤 날짜를 필터링 할 수 없습니다 난 그냥이 필요하다고가의 필터링하고있는 중이 야 X 축 범위. 원본 테이블은 다음과 같이 구성되어 있습니다. | 제품 | 날짜 | 단계 |

그리고 수식 위상 각 열을 계산 한 ([위상] = "위상 A", 1,0)

본질적 그래프는 각 스테이지를 통과 한 제품의 개수 나타내면 시간이 지남에 따라 생산되므로 특정 날짜에 해당 단계의 제품 수를 계산하려면 각 단계의 완료 날짜를 항상 알아야합니다. 나는 X 축에서 특정 날짜 범위를보고 싶습니다. 왜냐하면 판매 및 비용을 비교하기 위해 다른 두 그래프의 위/아래에 배치 된 다른 그래프가 있고 각 단계의 제품 수를 기반으로 분석하기가 더 쉽기 때문입니다. 축이 같은 날짜를 표시합니다. 죄송합니다. 사진을 업로드 할 수 없으므로 이해할 수 있기를 바랍니다.

우리는 가장 최근의 판매/비용에만 관심이 있습니다. 판매 및 비용 테이블에 대한 주문형 데이터 (Data on Demand)를 사용하여 해당 날짜를 제한하므로 그래프에 자동으로 원하는 것을 표시 할 수 있습니다. 이제는 phase 열의 날짜가 몇 년 후에 되돌아 올 수 있고 각 단계에있는 제품의 수를 알 필요가 있기 때문에 # of Products 그래프의 범위를 필터링하는 것이 유일한 문제이지만 그래프를보고 싶지는 않습니다. 처음부터 확대/축소 슬라이더를 사용하거나 그래프의 최소/최대 값을 하드 코딩하여이 작업을 수행 할 수는 있지만 자동화 된 무언가가 필요하므로 계속 조정할 필요가 없습니다.

답변

3

자동화 된 솔루션을 발견했으며 확대/축소 슬라이더를 사용할지 여부를 설정할 수 있습니다. StartDate 및 EndDate 속성을 Script 매개 변수로 입력해야하며 모든 시각화를 Script 매개 변수로 입력해야합니다 (스크립트에 총 5 개가 필요합니다). 코드는 아래에 게시됩니다 -이 도움이되기를 바랍니다!

NO ZOOM SLIDERS : 줌 슬라이더

#Import the necessary namespaces 
from Spotfire.Dxp.Application.Visuals import VisualContent 
from Spotfire.Dxp.Application.Visuals import AxisRange 
from Spotfire.Dxp.Data import DataPropertyClass 

#Define variables 
min = Document.Properties["StartDate"] 
max = Document.Properties["EndDate"] 

#Cast visual as specific plot type 
#Note use of VisualContent for any chart type 
plot1= plot1.As[VisualContent]() 
plot2= plot2.As[VisualContent]() 
plot3= plot3.As[VisualContent]() 

#Set visualization parameters 
plot1.XAxis.Range = AxisRange(min,max); 
plot2.XAxis.Range = AxisRange(min,max); 
plot3.XAxis.Range = AxisRange(min,max); 

: 빠른 응답

#Import the necessary namespaces 
from Spotfire.Dxp.Application.Visuals import VisualContent 
from Spotfire.Dxp.Application.Visuals import AxisRange 
from Spotfire.Dxp.Data import DataPropertyClass 

#Define variables 
min = Document.Properties["StartDate"] 
max = Document.Properties["EndDate"] 

#Cast visual as specific plot type 
#Note use of VisualContent for any chart type 
plot1= plot1.As[VisualContent]() 
plot2= plot2.As[VisualContent]() 
plot3= plot3.As[VisualContent]() 

#Set visualization parameters 
plot1.XAxis.ManualZoom = True 
plot2.XAxis.ManualZoom = True 
plot3.XAxis.ManualZoom = True 
plot1.XAxis.ZoomRange = AxisRange(min,max); 
plot2.XAxis.ZoomRange = AxisRange(min,max); 
plot3.XAxis.ZoomRange = AxisRange(min,max); 
1

IronPython 스크립팅에 의존하는 대신 부울 계산 열을 필터링하여이를 수행 할 수 있다고 생각합니다.

이 작업을 통해 지역별 제품 판매 더미 데이터 세트를 만들었습니다. 저는 Y 축에 Sum (Sales), X 축에 Sales Date를 가진 꺾은 선형 차트를 만들었습니다.

enter image description here

는 다음 나는 새로운 텍스트 영역을 추가하고 두 개의 입력 필드 속성 컨트롤을 추가했다. 필자는 문서 속성 인 dateBegin과 dateEnd를 Date라는 데이터 형식으로 명명했습니다.

Property Control Setup

지금 내 원하는 날짜 범위를 입력 할 수 있습니다.

Date Range Entry Fields

지금 내 X 축 (판매 날짜) 할 경우에만 사용자가 입력하는 날짜 범위를 반영 할 필요가있다. 나는 Spotfire의 필터링 기능을 이용하기로 결정했다. RowInDateRange라는 부울 계산 된 열을 삽입했습니다.그래서 지금은 저를 알려주는 열 (RowInDateRange)가 주어진 행 내에 있는지 여부를

CASE WHEN [Sales Date] >= Date("${dateBegin}") AND [Sales Date] <= Date("${dateEnd}") THEN True ELSE False END 

:

는 이미지에서 읽기 너무 어려운 경우

Edit Calculated Column

, 여기에 사용자 정의 표현이다 사용자가 입력 한 날짜 범위를 입력하면 쉽게 제외 할 행을 필터링 할 수 있습니다.

Filter out rows not in date range

시각화는 동적으로 사용자의 입력 날짜 범위를 반영한다. 체크 아웃 할 수있는 DXP 샘플을 저장했습니다 : Six Months Sales by Region.dxp

이 정보가 도움이되기를 바랍니다.

+0

감사합니다. 이것은 대부분의 그래프를위한 좋은 해결책입니다. 불행히도 필터 접근법이 그래프에 표시해야하는 값에 영향을 미치므로 원본 질문에 제 사례에 대한 추가 정보를 추가했습니다. 죄송합니다. IronPython 경로를 사용하는 이유에 대해 더 많은 정보를 제공하지 않았습니다. 제품의 총 수와 함께 최종 결과를 얻을 수있는 한 다른 옵션이 열려 있습니다! – SeeingSpots