用于类别轴的具有可变数量列的 Spotfire 条形图

问题描述 投票:0回答:1

我正在尝试创建一个条形图,其中类别轴上使用的列由下拉列表设置的 3 个属性选择。我想要这样做,以便当我想要使用少于 3 列时,我可以在某些下拉列表中选择“无”。

如果我使用自定义表达式执行此操作

<[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>
它仅在选择 3 列时有效,如果没有为任何下拉列表选择任何列,则会在可视化中给出“找不到列”错误。

如果还尝试了一个表达式,当第二个和第三个属性中的任何一个为 null 时考虑该表达式

CASE
    WHEN ${BarChartXaxis2} IS NULL AND ${BarChartXaxis3} IS NULL THEN <[${BarChartXaxis1}]>
    WHEN ${BarChartXaxis2} IS NULL AND ${BarChartXaxis3} IS NOT NULL THEN <[${BarChartXaxis1}] NEST [${BarChartXaxis3}]>
    WHEN ${BarChartXaxis2} IS NOT NULL AND ${BarChartXaxis3} IS NULL THEN <[${BarChartXaxis1}] NEST [${BarChartXaxis2}]>
    ELSE <[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>
END

但是,当我尝试保存表达式时,这给了我一个错误,表示它在

<
之后无效。

上面的表达有其他的方法或者有问题吗?

expression visualization spotfire
1个回答
0
投票

我尝试了不同的选择。最初你的表达有一些问题:

1 - 尖括号需要围绕整个表达式

2 - 表达式中的属性值不是 NULL,而是空字符串,在属性名称两边加上引号并与空字符串进行比较。

但是,表达式解析器似乎仍然不喜欢 case 语句中的 NEST。

因此,您可以删除 None 选项,当您只需要一个变量时,将三个属性设置为相同并使用:

<[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>

但这不太好,因为它重复了 X 轴标题中的变量。

如果您可以使用 IronPython,我建议将此脚本设置为在每次三个属性更改时运行:

您要提前定义文档属性“axisProp”。然后使用这个属性作为你的 X 轴。

prop1 = Document.Properties['BarChartXaxis1']
prop2 = Document.Properties['BarChartXaxis2']
prop3 = Document.Properties['BarChartXaxis3']

#From the script, the property does result as None when unset.
if prop2 is None and prop3 is None:
    xaxisProp = "<${BarchartXaxis1}>"
elif prop2 is None and prop3 is not None:
    xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis3}>"
elif prop3 is None and prop2 is not None:
    xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis2}>"
else:
    xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis2} NEST ${BarchartXaxis3}>"

Document.Properties['xaxisProp']=xaxisProp
© www.soinside.com 2019 - 2024. All rights reserved.