將選定的列名放入公式中回覆:將選定的列名放入公式中你好摩根0 ,
這是一個很棒的腳本。 必須如何更改腳本才能新增其他公式按鈕,例如 Col Mean 或 Col Std Dev?
回覆:將選定的列名放入公式中格茲摩根,
你是一個巫師。 我嘗試了你所說明的兩種方法並取得了成功。 更重要的是,我學到了更多的腳本技術。 非常感謝。回覆:將選定的列名放入公式中首先有幾點注意事項:
- oc 是列引用,JMP 無法解釋語法 oc( Connect Points(1) )。
- 覆蓋圖腳本索引中顯示的語法似乎需要列名稱,請參見下面的範例。 它也接受 :Name("Volume")(Connect Color (0) );
obj = Overlay Plot(
X( :Date ),
Y( :High, :Low, :Close, :Volume ),
Y Scale( Left, Left, Left, Right )
);
obj << Connect Points( 1 );
obj << :Volume( Connect Color( 0 ) );
obj << :Low( Connect Color( "Red" ) );
- 疊加圖有一些不錯的功能,但是,JMP 開發人員可能會建議使用圖形產生器。 對於你的資料表的結構來說,Overlay可能比較容易使用,所以我會使用Overlay。
- 下面的腳本以足球資料表的子集開始,您沒有新增任何列。 然後計算移動平均線。 該腳本建立一個覆蓋圖,並使用 Eval(Parse(EvalInsert())) 建立腳本索引中顯示的語法,並使用帶有引號的名稱和關閉點的選項。
- 腳本的第二部分演示了一種替代方法。 打開所有覆蓋列的線和點。然後使用 Xpath() 建立線段和標記段的參考清單。若要關閉線條,請將線條寬度設為 0。 若要關閉點,請將透明度設為 0。我發現使用這些段落使用更簡單的語法。然而,Xpath() 雖然非常有用,但可能被認為更高級。希望有幫助。
Names default to here(1);
dt = current data table();
colnme = "Speed";
oc = Column(dt, colnme);
nc = dt << New Column( colnme || " Moving Average",
Numeric,
Formula(Col Moving Average(oc[],1,4,16) )
);
ovp = Overlay Plot( Y(oc, nc));
ovp << Connect Thru Missing(1);
ncnme = nc << get name;
//The syntax is ovp << :col( opt1);
Eval( Parse(EvalInsert("ovp << :name(\!"^ncnme^\!")(Show Points(0))" ) ) ) ;
//alternate method
ovl = Overlay Plot( Y(oc, nc));
ovl << Connect Thru Missing(1);
lines = ovl << Xpath("//LineSeg");
points = ovl << Xpath("//MarkerSeg");
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
lines[1] << Line width(2); //turn on line 1
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
points[2] << Transparency(0); //turn off points 2
回覆:將選定的列名放入公式中繼續我的努力。 我已經取得了很大的進步。我將選定的列名稱放入公式中,現在可以使用對話方塊中的 MA 參數製作選定列及其移動平均線的疊加圖。 好的。 很不錯。 我正在使用“疊加圖”功能。 我可以修改兩個圖表上的所有點,但無法弄清楚如何僅修改繪圖的屬性之一。
這是一個程式碼片段來說明。 這有效:
cn1 = colName || "";
cn2 = colName || " Moving Average";
dt << New Column( colName || " Moving Average",
Numeric,
Formula( Eval( Parse( formulaString ) ) )
);
oc = Column( cn1 );
nc = Column( cn2 );
nw2 << Close Window;
funny = Overlay Plot( Y( oc, nc ), );
funny << (Connect Points( 1 ));
產生的圖連接了 MA 和原始點。
但是,如果我更改最後一行以僅修改其中一個圖,例如這個,它將不起作用:
funny << oc( Connect Points( 1 ) );
沒有點相連。
因此,「oc」在「疊加圖」函數中被識別為 Y 列之一,但在上述語句中未被識別。
有人可以幫忙嗎? 我的心理健康受到威脅。:) 我附上了嵌入了整個腳本的資料表。還有一個額外的自動生成的小腳本,可以按照我希望整個腳本的方式繪製情節;我只能透過手動更改圖例來製作此圖。
凱文
回覆:將選定的列名放入公式中好的。 我會照辦的。
非常感謝,
凱文
回覆:將選定的列名放入公式中沒問題。 但我會用gz的方法。 它更強大,因為它可以處理名稱中包含特殊字元的列。
回覆:將選定的列名放入公式中謝謝你,GZ,
是的,你的解決方案也對我有用。 如果沒有選擇任何列,則捕獲是一個很好的技巧。 我將繼續使用它。
回覆:將選定的列名放入公式中謝謝你,麥克,
是的,它確實對我有用。 而且,我學到了更多的腳本技術。
回覆:將選定的列名放入公式中只有當列名稱中沒有特殊符號時,您的腳本才會起作用。 如果存在,則命名參考必須是 :Name("string")。 此外,腳本中還新增了已選取列的檢查。
Names Default to Here(1);
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all, <<SET data="https://community.jmp.com/" type=""></SET>
回覆:將選定的列名放入公式中
嘗試這個。 col list box() 部分的最後兩行似乎是一個腳本,這意味著它們應該用分號(或膠水)分隔。其餘行是 col 列錶框的參數,以逗號分隔。 col 列錶框的“colName = ...”部分在這裡被註解掉了,因為我認為它沒有做太多事情。 最好在腳本的按鈕框部分抓住它。 如果需要,您可以新增回表變數。
最好讓列錶框僅載入數字列。 我不記得如何正確地做到這一點。 目前,它將全部載入到列錶框中。 我將 min / max col() 更改為 max selected。 即一次不超過 1 個。
至於公式部分,我通常需要一些嘗試和錯誤才能將字串放在我想要的位置。 這似乎有效。
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,//numeric,
//min col( 1 ),
max selected( 1 )//,
//colname = Eval Expr (Expr(x << get selected)[1])//,
//dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
colName = Char( (x << get selected)[1] );
//myCol = column(colName);
formulaString = "Col Moving Average( :"|| char(colName) ||", 0, 4, 0 )";
dt << New Column( colName || " Movin Average",
Numeric,
//Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
Formula( eval(parse(formulaString)) )
)
)
);
回覆:將選定的列名放入公式中我試圖弄清楚如何將對話框中的列選擇正確地轉換為公式。 我查看了腳本書中的大量討論和範例,嘗試了很多東西。 還沒有骰子。 正如您在腳本中看到的,我想選擇一列並根據列移動平均公式建立新列。 我將不勝感激的幫助。
這是我最近的嘗試:
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,
min col( 1 ),
max col( 1 ),
colname = Eval Expr (Expr(x << get selected)[1]),
dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
dt << New Column( Char( (x << get selected)[1] ) || " Movin Average",
Numeric,
Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
)
)
);