在Spotfire.DXP中需要对象或属性来控制"线和&曲线"

时间:2015-11-13 17:17:37

标签: ironpython spotfire

我从Spotfire中的IronPython脚本控制ScatterPlot。

我找不到必要的属性或对象来创建或控制" Line from Column"使用" Lines&曲线"散点图中的选项。 (见附图): enter image description here

我的脚本已附上,除了我需要帮助的最后一行外,它一切正常。

    from Spotfire.Dxp.Application.Visuals import VisualContent
from Spotfire.Dxp.Application.Visuals import ScatterPlot

if yAxisNormalization == "Norm0"  and yAxisAllorAverage == "Individual":
    #======= Norm0, Individual
    sTitle = "Individual Values Normalized To Baseline"
    sYAxisFormula = "Avg([val_t0_offset]) Over (Intersect([Week],[Subj_ID]))"
    sErrorBars = "StdDev([val_t0_offset]) over (Intersect([Subj_ID],[Week]))"

elif yAxisNormalization == "Norm0"  and yAxisAllorAverage == "Average":
    #======= Norm0, Average
    sTitle = "Treatment Averaged Values Normalized To Baseline"
    sYAxisFormula = "Avg([val_t0_offset]) Over (Intersect([Week],[Treatment]))"
    sErrorBars = "StdDev([val_t0_offset]) over (Intersect([Treatment],[Week]))"

elif yAxisNormalization == "NotNorm"  and yAxisAllorAverage == "Individual":
    #======= No Normalizaiton, Individual, just raw
    sTitle = "Individual Measured Values"
    sYAxisFormula = "Avg([Val]) Over (Intersect([Week],[Subj_ID]))"
    sErrorBars = "StdDev([Val]) over (Intersect([Subj_ID],[Week]))"

elif yAxisNormalization == "NotNorm"  and yAxisAllorAverage == "Average":
    #======= No Normalizaiton, Averaged data
    sTitle = "Treatment Averaged Values"
    sYAxisFormula = "Avg([Val]) Over (Intersect([Week],[Treatment]))"
    sErrorBars = "StdDev([Val]) over (Intersect([Treatment],[Week]))"

# ======================= setup line connection based on aggrigation ==========================
if yAxisAllorAverage == "Individual":
    sLineConnection= "<[Subj_ID]>"
elif yAxisAllorAverage == "Average":
    sLineConnection= "<[Treatment]>"

if yAxisNormalization == "NotNorm":
    sOutlierValue = "<[val_t0_offset]>"
elif yAxisNormalization == "Norm0":
    sOutlierValue= "<[Val]>"

#set the title
visual.Title = sTitle

#set the Y formula
scatterPlot = visual.As[ScatterPlot]()
scatterPlot.YAxis.Expression = sYAxisFormula

#ERROR BARS
scatterPlot.YAxis.ErrorBars.UpperExpression = sErrorBars
scatterPlot.YAxis.ErrorBars.LowerExpression = sErrorBars
scatterPlot.YAxis.ErrorBars.Enabled = True

# ------ redifine line connection ------------------
scatterPlot.LineConnection.ConnectionAxis.Expression = sLineConnection

# ---- change grey outlier bars ---------------------
######### NEED HELP HERE! ##############################
# how do I set the Yvalue for a Line created in Lines and Curves? ###
scatterplot.(linesAndCUrves??).(line[0]?).YvaluesColumn = sOutlierValue  <<<this is the line where I need help.
#############################################################
#############################################################

2 个答案:

答案 0 :(得分:1)

我个人没有使用过,但我认为您需要FittingModelCollection object,特别是方法AddColumnValuesLine

答案 1 :(得分:1)

从@ niko的链接,从列中获取两条水平线的完整代码是:

    sMinCol = "Test_t0_min"
    sMaxCol = "test_T0_max" 

# --- OUTLIER DEMARKATION LINES: --
oDataTable = Document.Data.Tables['all_results'] 
oXCol = oDataTable.Columns['Week'] 
scatterPlot.FittingModels.Clear() 

#lower
oYCol = oDataTable.Columns[sMinCol] 
oColumnValuesLine = scatterPlot.FittingModels.AddColumnValuesLine(oDataTable, oXCol, oYCol) 
oColumnValuesLine.AffectAxisRanges = True
oColumnValuesLine.Line.Width = 3
#upper
oYCol = oDataTable.Columns[sMaxCol] 
scatterPlot.FittingModels.AddColumnValuesLine(oDataTable, oXCol, oYCol) 
oColumnValuesLine.AffectAxisRanges = True
oColumnValuesLine.Line.Width = 3