用变量拟合样条曲线嘿,
我构建了一个带有动态图例的图表,用户可以通过单选框进行选择。
用户选择的图例名称保存为“L1”变量。
我想添加一项功能,当用户单击图例中的一个值时,该值的样条线会变得更加粗体。
我向文件添加一个状态处理程序并尝试使用此脚本:
rsh1 = test1 << Make Row State Handler( dt, rsupdate1 );
rsupdate1 =function({},
SplineSelectlist=dt:L1[dt<<GET selected="" rows=""></GET>
“适合位置”状态无法识别该变量。
我还尝试使用“parse”或不使用“eval”或在之前定义变量-
mycolumn= eval(L1);
但它们都不起作用。
我很高兴听到是否有解决方案。
谢谢。
回复:用变量拟合样条线@vsr ,你的任务不同于@四郎的任务。@四郎需要通过不同的方式拟合样条曲线价值观一列的。
看我提供的示例,显示的曲线对于不同的情况是不同的价值观的:状态。
从你的描述来看,你似乎想要不同的列,不是一列的不同值。 Fit 在哪里选择价值观所选列的。 如果没有更多关于您具体想要做什么的细节,我只能猜测。
我的猜测是,您可能想要绘制不同的 Y 或不同的 X,即列。 如果是这种情况,JMP 有一个内置解决方案,称为列切换器。以防万一,这就是您所需要的,我提供了示例屏幕截图和脚本。如果这不是您所需要的,请提供更多详细信息。

Names Default to Here(1);
dt = Open("$sample_data/TechStock.jmp");
biv = dt << Bivariate(
Y( :Name( "Adj. Close*" ) ),
X( :Date ),
Fit Spline( 10, {Line Color( {212, 73, 88} )} ),
Column Switcher(
:Name( "Adj. Close*" ),
{:Open, :High, :Low, :Close, :Name( "Adj. Close*" )}
)
);
//select a Y column one at a time or select the "play/go" button and JMP will cycle thru all columns回复:用变量拟合样条线你好,
我想加入最初的查询,因为我遇到了类似的问题。
我正在尝试创建一个“图例选择器按钮”,其中每个值都是一个列名称。
当选择一个值时,传奇和样条线我的双变量 x/y 图的将根据所选值进行更新(之前的图例和样条线将被删除)。
但是,我不知道如何调整“适合位置”功能来接收多变的作为输入(变量是所选列名称),如原始查询中所述。
谢谢,哈达尔
回复:用变量拟合样条线由于没有提供更多信息,我猜测您需要什么。 也许您只需要使用 和 表达式来制作样条语句。该脚本允许选择一个或多个图例值。 它用:
- 用于管理图例选择的不可见汇总表的默认链接。 当二元变量关闭时,这个不可见的表也随之关闭。
- 行状态处理程序函数,用于清除以前的样条线并仅显示从图例中选择的样条线。
- 它已在 JMP14.1 和 JMP13.21 上进行了测试。

Names Default to Here(1);
dt0 = Open("$sample_data/SATByYear.jmp");
//create a smaller table too many groupings
dt0 << Select Where( :Region=="Plains" | :Region=="South");
dt = dt0 << Subset(All Columns, Output Tablename("SomeStates"));
close(dt0,NoSave);
//change Year from Ordinal to Continuous to create a Bivariate report
dt:Year << Set Modeling Type("Continuous");
//The legend column is hardcoded. It seemed like you know how to do that.
//I created a new column just for interest
gCol = dt << New Column("Region_State", character);
gcol << set each value( substr(:Region,1,1) || "_" || :State);
dt << Color by Column(:Region);
//Create the Bivariate report
biv = dt << Bivariate( Y(:SAT Math), X(:Year) );
//Add a row legion for the legend column. For your script you woudl have to remove the
//previous legend and add a new one.
rbiv = Report(biv);
fb = rbiv[FrameBox(1)];
//You would likely change both color and symbol, just made it different for interest
fb << Row Legend(:Region_State, color(0), Marker(1));
//It will be easier to create the Spline with a By group. The Summary table simplifies the task.
sumdt =dt << Summary(Group(:Region_State), Invisible);
//if the biv winow is closed/ close summary table
biv << On Close (Close(sumdt, NoSave)); //closes the summary table and row state handler
//Create a row state handler function, that defines the tasks when rge rowstate of sumdt changes.
f = Function({a},
_c = biv << Xpath("//IfBox[@isTrue='true']");
for(i=nitems(_c), i>=1, i--, biv << (curve[i] << Remove Fit) );
_yy = sumdt << get selected rows();
if(nrow(_yy)>0,
_xx = (sumdt:Region_State<<GET values=""></GET>
回复:用变量拟合样条线这里没有足够的信息来回应,并且存在一些语法问题。
图表是否已经绘制了样条线并且您希望突出显示所选项目?
您使用的是 GraphBuilder 还是 Bivariate(通过 X 拟合 Y)?
:eval(L1) 不是正确的语法。