如何使用 Iron Python 在 Spotfire 上切换直线和曲线名称的可见性?

How To Toggle Lines & Curves Names Visibility On Spotfire With Iron Python?

我一直在尝试创建一个 IronPython 脚本来切换我的条形图水平线名称,但没有成功。

我想通过单击按钮实现此目的:

我目前使用的代码是:

from System.Drawing import Color
from Spotfire.Dxp.Application.Visuals import *

# vis parameter referencing an existing BarChart visualization
vis = vis.As[BarChart]()

# Read the document property with the toggle value (true/false)
Document.Properties['GenericToggleLineNames'] = not Document.Properties['GenericToggleLineNames']

#Loop through all the Lines & Curves collection
if Document.Properties['GenericToggleLineNames']:
    for fm in vis.FittingModels:
        if fm.Line.DisplayName == 'Defined Underload Limit':
            fm.Line.CustomDisplayName = 'Defined Underload Limit'
        elif fm.Line.DisplayName == 'Defined Warning Limit':
            fm.Line.CustomDisplayName = 'Defined Warning Limit'
        elif fm.Line.DisplayName == 'Defined Critical Limit':
            fm.Line.CustomDisplayName = 'Defined Critical Limit'
else:
    for fm in vis.FittingModels:
        if fm.Line.DisplayName == 'Defined Underload Limit':
            fm.Line.CustomDisplayName = ''
        elif fm.Line.DisplayName == 'Defined Warning Limit':
            fm.Line.CustomDisplayName = ''
        elif fm.Line.DisplayName == 'Defined Critical Limit':
            fm.Line.CustomDisplayName = ''

但是,当我到达 "Show = true" 时,代码不会更改 CustomDisplayNames。

根据 Spotfire API,DisplayName 只提供了一个 get 方法,而 CustomDisplayName 同时提供 getset.

有人知道如何创建这个切换吗?

我写了一篇关于如何执行此操作的博客 post。请到这里 -- https://datashoptalk.com/ironpython-in-spotfire-turning-lines-curves-on-and-off/。代码将根据您在页面上的内容而有所不同。如果您通过此 post.

得到正确答案,请点赞

我设法让它以一种可怕的方式工作。如果有人需要,会在这里分享,但是,我很乐意找到合适的方法。

尽管 Spotfire API documentation 提到 ReferenceCurve.DisplayName是一个只读的属性(只有get方法),好像是在更新CustomDisplayName的时候改变的。

考虑到这一点,我创建了另一组 IF,寻找 "new" DisplayName 并将其替换为旧的。

# Imports
from System.Drawing import Color
from Spotfire.Dxp.Application.Visuals import *

#Add a vis parameter referencing an existing LineChart visualization
vis = vis.As[BarChart]()

#Loop through all the Lines & Curves collection
Document.Properties['GenericVisualisationDescriptions'] = not Document.Properties['GenericVisualisationDescriptions']

if Document.Properties['GenericVisualisationDescriptions']:
    for fm in vis.FittingModels:
        if fm.Line.DisplayName == ' ':
            fm.Line.CustomDisplayName = 'Defined Underload Limit'
        elif fm.Line.DisplayName == '  ':
            fm.Line.CustomDisplayName = 'Defined Warning Limit'
        elif fm.Line.DisplayName == '   ':
            fm.Line.CustomDisplayName = 'Defined Critical Limit'
else:
    for fm in vis.FittingModels:
        print fm.Line.DisplayName
        print fm.Line.CustomDisplayName
        if fm.Line.DisplayName == 'Defined Underload Limit':
            fm.Line.CustomDisplayName = ' '
        elif fm.Line.DisplayName == 'Defined Warning Limit':
            fm.Line.CustomDisplayName = '  '
        elif fm.Line.DisplayName == 'Defined Critical Limit':
            fm.Line.CustomDisplayName = '   '