圖形生成器、如何更改元素的顏色以及有關 SendToReport 語法的信息你好,
我創建一個具有動態內容的圖表(變量數量在運行時確定)。
我想在設置圖形生成器後更改一些內容,例如分配新顏色。 後來這樣做的原因是因為,在執行腳本的其他部分(我無法提前運行)之前,我不知道所做的更改。
我已將我的基本問題簡化為以下示例:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
// do some other stuff incl. addition or removal of variables to gb
// how do I *MODIFY* the color of Points, Smoother here or add a Line Plot?
如果有幫助的話,我知道變量在圖中的位置(上例中的 1,1)。
乾杯,
亞歷克斯
回复: 如何改變線條的顏色嗨,亞歷克斯,
回复較晚,抱歉。
假設您正在發送以下圖例模型消息。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
- 第一個參數 (2) 是引用 ScaleBox 中特定圖例模型的唯一 ID。 在上面的示例中,值 1 表示包含點的圖例模型,而值 2 表示更平滑的線條。
- 第二個參數 (Properties( 1, {Line Color( 4 )} )) 包含有關圖例模型中的哪個元素應用給定屬性集的信息。
- Properties (1) 中的第一個參數是一個從零開始的項目編號,用於標識要應用新屬性的項目。
- Properties ({Line Color( 4 )}) 中的第二個參數是應用於給定圖例模型項的屬性列表。 在本例中,我們將線條顏色更改為綠色。
這裡有一些例子:
以下腳本將第一個圖例模型(點)中的第一項設置為綠色。 在本例中,第一項是“F”。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 1, Properties( 0, {Line Color( 4 )} ) )}
)
)
);
(從現在開始,我將只給出圖例模型部分來替換上面的腳本)
以下圖例模型片段將更改點圖例模型中第二個項目(“M”)的顏色。
Legend Model( 1, Properties( 1, {Line Color( 4 )} ) )
以下圖例模型片段將更改更平滑的線條圖例模型中第一項(“F”)的顏色。
Legend Model( 2, Properties( 0, {Line Color( 4 )} ) )
以下圖例模型片段將更改更平滑的線條圖例模型中第二個項目(“M”)的顏色。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
注意:更改平滑線的線條顏色也會更改相應點的顏色,但更改點的點顏色不會影響關聯的平滑線的顏色。
回复: 如何改變線條的顏色感謝您的反饋。
您還可以解釋一下圖例模型語法嗎?
回复: 如何改變線條的顏色SendToReport 參數的語法如下(來自腳本索引):
SendToReport( Dispatch( "Outline name", "Element name", Element type, command );
調度命令中的第二個參數(“元素名稱”)用作標識符來查找正確的 DisplayBox。 例如,當對 FrameBox 使用 Dispatch 命令時,此參數將與“helpKey”屬性匹配。 元素類型參數告訴 JMP 要查找的屬性類型(因為不同的 DisplayBox 的屬性類型不同)。
對於 ScaleBox(根據本例的需要),元素名稱參數引用“charID”屬性。 Graph Builder 出於各種目的創建多個 ScaleBox,但將 charID“400”分配給發送圖例模型等消息所需的 ScaleBox。
下面是圖形生成器的 XML 摘錄(使用下面的腳本創建),其中顯示了創建的五個 ScaleBox。 您會注意到其中一個比例框的 charID 為“400”,這是我們需要用於圖例模型消息的比例框。
<..truncated..>
<..truncated..>
<..truncated..>
使用圖例模型消息的另一種方法是將其直接發送到此 ScaleBox。 引用此 ScaleBox 的一種方法是使用 XPath,如下所示。 此方法引用 charID 為“400”的 ScaleBox。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
scalebox = gb << xpath("//ScaleBox[@charID=\!"400\!"]");
scalebox << Legend Model( 2, Properties( 1, {Line Color( 4 )} ) );
下面的腳本執行相同的操作,但使用 SendToReport 方法。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )}
)
)
);
謝謝,
回复: 如何改變線條的顏色這是對 JMP 開發的一個很大的要求,即記錄圖形生成器的內部工作原理。
回复: 如何改變線條的顏色我做了同樣的事情,但現在我確實看到了生成的代碼,我需要能夠理解它。
我找不到 Legend Model 的文檔,也找不到“400”的文檔。
這就是為什麼我尋求幫助並且非常感謝反饋。
回复: 如何改變線條的顏色並未記錄圖形生成器的所有“內部”語法。 當涉及到 GB 時,我會執行以下操作:
創建一個看起來與我想要的一模一樣的圖表,包括圖表類型、符號、顏色、線條等。
點擊紅色小三角即可獲取JSL代碼
將 JSL 代碼嵌入我的腳本中
基本上我讓 GB 完成繁重的工作,然後使用它生成的代碼。
回复: 如何改變線條的顏色你好伊恩,
謝謝你的好例子。
您能否指出腳本指南中包含有關圖例模型語法、值“400”含義的信息的部分?
我搜索了“傳奇模型”這個詞 - 沒有找到。 400 有幾次點擊,但我無法識別相關內容。
感謝您的幫助!
乾杯,
亞歷克斯
回复: 如何改變線條的顏色只需以交互方式執行此操作,然後檢查 JMP 為您生成的代碼即可。 調整你的例子:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
// Add 'weight'
Wait(2);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable({Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )});
// Change the colour of the points and smoother for 'weight' to green
Wait(2);
gb << SendToReport( Dispatch({}, "400", ScaleBox, {Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )} ) );
關於不太重要的問題,您可以查看“幫助>書籍>腳本指南”,它通常會提供一些提示。
回复: 如何改變線條的顏色我也有過類似的問題,但從未得到答案。 看來這個論壇的JMP專家迴避這個問題或者不鼓勵JMP用戶更深入地了解這個問題。
回复: 如何改變線條的顏色這是一個更好的例子。我如何改變點的顏色和權重的平滑度?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable(
{Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )}
);
gb << SendToReport(
Dispatch( {}, "400", ScaleBox, {Legend Model( 1, Properties( 0, {Line Color( RGB color(31,119,180) ), Fill Color( 0 )} ) )} )
);
不太重要的問題:
在這種情況下“400”意味著什麼?
回覆: 如何改變線條的顏色@Justin_Chilton ,您好,除了helpKey和charID之外,元素名稱還使用哪些附加識別碼?
當我更改軸標籤時,JSL 代碼顯示
gb << SendToReport( Dispatch( {}, "<STRONG>X Title</STRONG>", TextEditBox, {Set Text( "new" )} ))....但是X 標題沒有顯示在顯示樹的 XML 程式碼中。它是哪個標識符?
與顯示框對話