我正在尝试使用用户输入来创建树状图,以便在层次结构中选择列。我有三个(下拉)文档属性,分别称为treemap1,treemap2和treemap3,每个属性的值都是带有列名的字符串。我正在为层次结构轴而苦苦挣扎。如果我使用...
<${treemap1} NEST ${treemap2} NEST ${treemap3}>
...可视化效果很好。但是,我想为第二个和第三个控件添加一个“无”选项,但是当我这样做时,一旦将其中一个设置为“无”,该可视化效果将不会呈现并给出错误“该表达式在NEST之后无效...”。这是有道理的,因为[column] NEST null NEST null
不是有效的表达式。因此,我想添加一个case语句来解决该问题,检查空值并相应地更改表达式。我已经尝试过各种排列方式:
<
case
when "${treemap2}" ="" and "${treemap3}" ="" then ${treemap1}
when "${treemap2}" ="" then ${treemap1} NEST ${treemap3}
when "${treemap3}" ="" then ${treemap1} NEST ${treemap2}
else ${treemap1} NEST ${treemap2} NEST ${treemap3}
end
>
...但是它从不让我保存,总是返回“该表达式在第4行NEST之后无效”。我认为这是一个语法问题,但我遇到了麻烦。所以我的问题是1)我可以在分类轴上以这种方式使用case语句吗?2)如果是,为了使Spotfire接受它,需要更改哪些内容?
提前感谢...
[最好是添加3个按钮,每个按钮与一个将可视化作为参数的ironpython脚本相关联(我们将其称为vis
)。
from Spotfire.Dxp.Application.Visuals import Treemap
vis.As[Treemap]().HierarchyAxis.Expression = "<${treemap1} NEST ${treemap2} NEST ${treemap3}>"
对其他两个对象执行相同的操作,并使用表达式<${treemap1} NEST ${treemap2}>
和<${treemap1}>
。
通过将表达式设置为参数(我们称它为e
),您甚至对于3个按钮都只有一个脚本:
from Spotfire.Dxp.Application.Visuals import Treemap
vis.As[Treemap]().HierarchyAxis.Expression = e