以编程方式设置Spotfire图形轴范围

gre*_*per 2 ironpython spotfire

我正在尝试编写一个简单的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
Run Code Online (Sandbox Code Playgroud)

我在"编辑脚本"窗口中输入了可视化和属性控件作为"脚本参数".有谁知道如何使这项工作?谢谢!

注意:我不想使用缩放滑块.


更新:我正在做一个Sum([Column])OVER(AllPrevious([Date]))所以我不能过滤任何日期来计算Y.我只是需要它们从X轴范围中过滤掉.原始表的结构如下:| 产品| 日期| 阶段|

我用公式计算了每个阶段的列:If([Phase] ="Phase A",1,0)

从本质上讲,该图表显示了随着时间的推移,每个生产阶段都经历了多少产品,因此我需要始终知道每个阶段的完成日期,以计算在任何特定日期该阶段的产品数量.我只想在X轴上看到某个日期范围,因为我在其他2个表的上方/下方放置了一些其他图表来比较销售和成本,并且根据每个阶段的产品数量分析更容易轴显示相同的日期.对不起,我无法上传图片,所以我希望这是有道理的.

我们只关心最近的销售/成本,并且我使用销售和成本表的数据按需过滤器来限制这些日期,以便图表自动显示我想要的内容.现在唯一的问题是过滤产品数量图的范围,因为阶段列中的日期可以追溯到几年,我们需要知道每个阶段的总产品数量,但我们不希望看到图表从一开始......我可以通过缩放滑块或硬编码该图中的最小/最大来实现这一点,但我真的希望自动化的东西,所以我们不必不断调整它.

gre*_*per 6

我找到了一个自动化解决方案,您可以将其设置为使用缩放滑块.您必须将StartDate和EndDate属性作为脚本参数输入,并且还必须将每个可视化作为脚本参数输入(因此我的脚本总共需要5个).代码发布在下面 - 希望这有助于某人!

没有变焦滑块:

#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);
Run Code Online (Sandbox Code Playgroud)

使用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.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);
Run Code Online (Sandbox Code Playgroud)