將 Y 軸編寫為對數刻度你好,
我有腳本使用堆疊資料製作多個直方圖。 直方圖中使用的 y 軸是堆疊資料列:Data,直方圖中使用的 x 軸是堆疊資料列標籤:化學化合物。 然後我使用 Page (:Sample ID) 將我的圖表分成每個樣本一張圖表。 根據我使用腳本的資料集,我可能有 2 個樣本或 100 個樣本。 我的圖表工作正常,但是,我希望 y 軸採用對數刻度。 我已經嘗試了多種插入程式碼的方法來執行此操作,但是,我最多的工作是 1 個對數刻度的圖形,而其他圖形都是線性的。 我已附上程式碼。 正在工作的部分是「ScaleBox (2)」。它更改了要記錄的第一個圖表,但是,它將其餘比例保留為線性。 如果我將“ScaleBox”後的 (2) 更改為 (3),則群組中的第二個圖將更改為對數,而其他圖表則保持線性。 如果我完全刪除「ScaleBox」後面的 (#),則不會記錄任何內容。 我還嘗試將“Left Y Log Scale (1)”插入“變數”區域,但什麼都沒有。
我已附加一個資料集來與腳本一起運行。 任何對此的幫助將不勝感激!
謝謝你,
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Chemical Compound ), Y( :Data ), Page( :SampleID ) ),
Elements( Bar( X, Y, Legend( 10 ) ) ),
SendToReport(
Dispatch(
{},
"Data",
ScaleBox (2),
{Scale( "Log" ), Format( "Best", 10 ), Min( 0.01 ), Max( 80 ), Inc( 1 ),
Minor Ticks( 1 )}
),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} ),
)
);回覆:將 Y 軸腳本編寫為對數刻度你好!
我一直在使用這個解決方案來滿足我的對數比例繪圖需求。 效果很好。 但是,如果我想繪製大量樣本(例如 > 50),則會出現錯誤(請參閱下文)。 以前有人遇過這個嗎? 我嘗試添加“wait();”之前和之後以及在不同的領域認為我的程式碼只是需要更多時間。 它適用於 < 50 個樣本,任何以上都會產生錯誤。
文件深度過大:256 使用 XML_PARSE_HUGE 選項
在存取或評估 'Xpath' 時,Xpath( "//ScaleBox[@charID='Rel TEQ']" ) /*###*/
這是我的程式碼。
dtstacked3:Parameter3 << set property( "Row Order Levels", 1 );
dtstacked3:Sample ID << set property ("Row Order Levels",1);
gb3 = dtstacked3 << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Parameter3 ), Y( :Rel TEQ ), Page( :Sample ID ), Color( :Rel TEQ 2 ) ),
Elements( Bar( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox, {Legend Model( 6, Properties( 0, {gradient(
{Color Theme(
{"Paired Copy 2 2502", 8193, {{254, 207, 132}, {254, 207,
132}, {254, 207, 132}, {254, 207, 132}, {254, 207, 132},
{254, 207, 132}, {114, 171, 187}, {114, 171, 187}, {114,
171, 187}, {114, 171, 187}, {114, 171, 187}}}
), Scale Values( [0 1] ), Width( 12 ), Discrete Colors( 1 )}
)}) )} ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
);
xx3 = gb3 << Xpath("//ScaleBox[@charID='Rel TEQ']");
xx3 << {Scale("Log"), Format("Best", 10), Min(0.1), Max(80), Inc(1), Minor Ticks(1)};
gb3 << on close( Close( dtstacked3, nosave ) );謝謝!
萊西
回覆:將 Y 軸腳本編寫為對數刻度感謝您提供這個解決方案! 我會再檢查一下。
回覆:將 Y 軸腳本編寫為對數刻度我沒有意識到 xpath 可以用於此目的。漂亮乾淨的解決方案!
回覆:將 Y 軸腳本編寫為對數刻度我喜歡使用 XPath()。 一條訊息適用於找到的所有物件。 請參閱下面腳本的最後 2 行。《JSL Companion》第二版的第 6 章中有關於 Xpath() 和 Find() 的一節和範例腳本。 您可以在腳本索引 > 顯示框 > 搜尋 xpath 中找到一個簡單的範例。要了解有關 XPath 語法和函數的更多信息,請單擊這裡
< https://www.tutorialspoint.com/xpath/xpath_quick_guide.htm >
gb = Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Chemical Compound ), Y( :Data ), Page( :SampleID ) ),
Elements( Bar( X, Y, Legend( 10 ) ) ),
SendToReport(
// Dispatch(
// {},
// "Data",
// ScaleBox (2),
// {Scale( "Log" ), Format( "Best", 10 ), Min( 0.01 ), Max( 80 ), Inc( 1 ),
// Minor Ticks( 1 )}
// ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} ),
)
);
xx =gb << Xpath( "//ScaleBox[@charID='Data']");
xx << {Scale( "Log" ), Format( "Best", 10 ), Min( 0.01 ), Max( 80 ), Inc( 1 ), Minor Ticks(1) };
回覆:將 Y 軸腳本編寫為對數刻度不幸的是,您必須將日誌 Y 軸訊息傳送到每個圖表頁面。此程式碼有效,但在日誌中顯示錯誤。希望有人為您提供更乾淨的解決方案。
編輯 2018 年 9 月 4 日我正在循環 id_list 而不是 unique_values。固定代碼如下。
Get_unique_values = Function( {in_list},
{Default Local},
tmp = [=> 0];
Insert Into( tmp, in_list );
tmp << get keys;
);
dt = data table("Test Data");
id_list = column(dt, "Sample ID") << get values;
unique_values = get_unique_values(id_list);
gb = dt << Graph Builder(
Size( 530, 1460 ),
Show Control Panel( 0 ),
Variables( X( :Chemical Compound ), Y( :Data ), Page( :Sample ID ) ),
Elements( Bar( X, Y, Legend( 10 ) ) ),
);
for (i = 1, i <= nitems(unique_values), i++,
gb << SendToReport(
Dispatch( {}, "Data", ScaleBox( i + 1 ),
{Scale( "Log" ), Format( "Best", 10 )}
)
);
);