JSL 腳本:用於繪製數據表所有列的圖形生成器大家好,
長期 JMP 用戶(jsl 腳本新手),第一次發帖。 我將不勝感激任何幫助!
我正在編寫一個執行兩件事的腳本:
1.打開一個文本文件,導入數值數據,然後保存數據表,以便稍後打開。
2. 使用圖形生成器一次繪製所有“y 軸”列
我對第 1 項沒有任何問題,因此不需要對此發表評論。 第 2 項給我帶來了問題。 我還沒有找到一種方法可以在一張圖表上同時繪製所有 y 軸列。
數據表具有 1 個 x 軸數據列(要在生成的圖形的 x 軸上使用的數據),但它可以具有 1 個或多列需要位於圖形的同一 y 軸上的數據列。 我試圖直觀地比較這些數據,使用一張圖表繪製所有數據非常有用。 我可能可以將數據堆疊到一個 x 和一個 y 數據集中,並使用第三列用於疊加,但我不想這樣做。
有任何想法嗎?
回复:JSL 腳本:圖形生成器繪製數據表的所有列謝謝吉姆,
這非常有效。 我很感謝您溫柔地鼓勵我閱讀該手冊——我會再次閱讀該手冊,並希望保留其中的另外百分之幾。 不過,我並不總是從手冊中學習,這就是我來到這裡的原因。 老實說,我花了大約 5 個小時才能弄清楚你做了什麼,所以我很欣賞你的專業方法,因為它節省了我寶貴的時間,並向我展示了一些我將來可以使用的新東西。 乾杯
回复:JSL 腳本:圖形生成器繪製數據表的所有列- 您需要閱讀腳本指南
- 我為您提供了一個腳本,它向您展示了 JSL 需要是什麼樣子才能創建您的圖表,或者至少是我對您想要的圖表的解釋。
- 我對交互式運行它的建議是,為您提供一種按照您希望的方式生成圖形的方法,然後您所需要做的就是讓 JMP 生成圖形的腳本,然後該腳本會向您顯示需要什麼被創建以生成圖表。
- 我附加了一個腳本,該腳本接受半導體能力數據表,然後使用所有連續列,生成疊加圖表。第一個連續列用作 X 列,其餘的用作多個 Y 列。
- 腳本中使用的所有函數都記錄在腳本索引中。然而,學習各種工具和結構將使您能夠創建獨立創建的腳本。
- 當您在理解 JSL 中的某些組件時遇到困難時,社區討論組可以為您提供幫助
- 從輸入動態數據表構建分析、圖表等的示例可在社區站點的討論中找到。人們需要查看已經發布的討論以尋求解決方案
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );回复:JSL 腳本:圖形生成器繪製數據表的所有列嗨吉姆,
感謝您的及時回复! 您的帖子準確地描述了我希望腳本執行的操作,不,我不是以交互方式執行此操作。 該圖需要使用腳本創建,以便當我運行腳本時:
1.打開一個文本文件並將所有數據加載到數據表中,保存數據表(我已經完成了這部分腳本,沒有問題)。
2. 創建所有 y 數據列與一個 x 數據列的單個圖(這是我需要幫助的)
數據文件可以有任意數量的 y 數據列(具有不同的名稱),但始終只有一個 x 數據列。 我已經編寫的加載器腳本加載所有數據並命名列。在文件加載到數據表中之前,我不知道有多少 y 數據列。
最初的想法是將列列表發送到圖形生成器中的“Y”變量,但我不確定這是否可能。 也接受其他建議,但我想保留一個 x 數據列的數據表結構,其中包含許多 y 數據列(即不想堆疊數據)。
-戴夫
回复:JSL 腳本:圖形生成器繪製數據表的所有列如果您以交互方式運行圖形生成器,則要將多個列繪製為 Y 軸,您所需要做的就是抓取要繪製圖形的所有列,並將它們拖動到 Y 放置區域。

執行此操作的 JSL 如下
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);