我正在尝试创建一个按钮来更改条形图,以便在 y 轴上的 2 列(并排条形)和 1 列之间切换。 切换的第一个选项: 切换的第二个选项: 我使用的按钮每次单击时都会将文档属性增加 1,并且使用 y 轴的自定义表达式来检查文档属性的值并相应地更改轴。 自定义表达式是一个 if 语句,检查它是奇数还是偶数,然后更改列。 (旁注 - 我还没有尝试使用 Iron Python 脚本解决这个问题)
我试过了
If( ${DocProp} % 2 = 0, (UniqueCount([moa]) , UniqueCount([jp_cluster])),(UniqueCount([moa])))
但收到错误:
Expected ')' but found ',' on line 1 character 37.
我知道两列之间的逗号可能会干扰 if 语句而导致问题,所以我尝试了 case 语句:
case ${RemoveJPCluster} % 2 when 0 then (UniqueCount([moa]), UniqueCount([jp_cluster])) else UniqueCount([moa]) end
但这会引发同样的错误:
Expected ')' but found ',' on line 1 character 44.
我也尝试过: + 和 巢
对此有什么帮助吗?有可能吗?我不知道为什么我不能用括号将两列括起来并收工...
我发现的唯一方法是制作一个ironpython脚本
from Spotfire.Dxp.Application.Visuals import *
Document.Properties["DocProp"] += 1
myVis = myVis.As[Visualization]()
if Document.Properties["DocProp"] % 2 == 0:
myVis.YAxis.Expression = "UniqueCount([moa])"
else:
myVis.YAxis.Expression = '$map("UniqueCount($csearch([table_name],"mcbcce*"))",",")'
它附加到一个按钮,并在 DocProp 更改时更改列。
解决的问题在第7行:
我创建了 2 个计算列,它只是使用此前缀重命名了列:“mcbcce”。
然后我使用 csearch 选择这些列,将它们输出为两个单独的列。
最后我使用“map”将 UniqueCount 聚合分配给它们两个。
我不确定为什么这不起作用,可能是因为您怀疑逗号妨碍了。
不要创建值为 1 或 2 的 DocProp, 您可以直接将所需的表达式放入其中。 因此,您添加一个文本区域,其中包含分配给 DocProp 的下拉列表。
通过:固定值设置属性值,然后将两个条目分配为:
显示名称:1(或任何你想要的)
值:UniqueCount([moa])
显示名称:2
值:UniqueCount([moa]),UniqueCount([jp_cluster])
然后直接用 ${DocProp} 填充您的值轴。