是什麼促使你提出這個願望清單請求?
(編輯)顯然,模板在這裡添加了一堆文字。其設計理念是,無論指定的繪製順序如何,選取的行都會繪製在每個使用者自訂圖形腳本的上方。
我知道開發人員原本想修復未選取資料點顯示在已選取資料點上方的問題,但他們採取了偷懶的辦法,徹底扼殺了使用者自訂繪製順序的希望。現在,選取的資料點會顯示在所有其他資料點之上。我什至都覺得滑鼠指標會顯示在已選取資料點上方有點不可思議。
您希望看到哪些改進?
(編輯:由於此表單丟失了我先前的回應)我希望 JMP 能夠遵循圖形自訂清單中指定的繪製順序。如果使用者在標記段之後附加圖形腳本,那麼該腳本繪製的任何元素都應該繪製在所有標記之上,就這麼簡單。
為什麼這個想法很重要?
(編輯:由於此表單丟失了我的第一個回复)這顯然非常重要。極為重要。以至於我的組織正在投入大量資源開發替代方案,例如 Python 或線上 JavaScript。現在有許多工作流程在 JMP14 或 16 中根本無法完成。
請看下圖:

在這裡,我可能想透過在圖例中選擇特定項目來突出顯示它。但是,當我這樣做時,密集的數據點會完全遮蔽所有樣條曲線,即使樣條曲線是在標記線段之後作為單獨的腳本繪製的。

這只是一個例子。在我的組織中,通常會有成千上萬甚至數十萬個數據點。為了正確地使用這些數據,需要在數據點上方繪製某種自訂的總和圖形(無論是樣條曲線、目標線、置信區間或其他任何自訂圖形)。但在 JMP14 及更高版本中,這種做法完全失去了互動性,因為選擇項目(及其關聯的資料點)會完全遮蔽圖表上繪製的所有其他圖形。
雖然我們單位升級到新版 JMP 的速度很慢(很多人還在用 JMP12),但我必須告訴大家,新版 JMP 的工作流程和以前完全不一樣了。我們非但沒有獲得更快的速度和更好的功能,反而得到了一個完全沒用的東西。
雖然我理解使用者可以簡單地取消選擇行(例如,透過點擊單一資料點),但這種針對 JMP 開發人員從根本上糟糕的設計決策而採取的變通方法不應該是必要的,而且並非總是可以接受的(並且還會改變視覺效果/意義):

在我看來,這個問題非常嚴重,JMP 應該提供一個熱修復程序,為 JMP14 及更高版本的所有用戶系統打補丁,而不是等到 JMP18 再進行修復。
好吧,現在我明白你的意思了。 我明白,這可能很煩人......
儘管如此,你的解決方法()很棒 - 當我懶得優化圖表本身時我也會使用它。
底下人們可以說:好多了
比
*) 在 Jmp 16 中匯出的互動式 html 檔案中,曲線未置於前面。 幸運的是,JMP 17 修復了這個錯誤:)
儀表板中的曲線:送到前面?
為了讓Jmp變得更好...
最初的願望:
與“突出顯示”(將項目發送到前面)的一般思想相衝突,對嗎?
實際的問題只是:
如何在自訂視窗中新增一個複選框以強制項目保持“在所有內容之上”
相同的功能可以更廣泛地使用,例如,也可以在突出顯示的數據點之上保持更平滑的擬合。

關於即使未選擇任何內容也會隱藏數據點的「突出顯示」數據點?
使點變小或稍微透明也有幫助。
選擇一個子集後用 200k 資料點繪圖:

dt = Open( "$SAMPLE_DATA/Airline Delays.jmp" );
dt = dt << Concatenate(
dt, dt, dt,
Append to first table
);
dt << Concatenate( dt, Append to first table);
dt << Select where( :Airline == "Northwest" );
Graph Builder(
Size( 618, 479 ),
Show Control Panel( 0 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables( X( :Day of Week ), Y( :Elapsed Time ), Overlay( :Airline ) ),
Elements( Points( X, Y, Legend( 9 ) ), Smoother( X, Y, Legend( 10 ) ) ),
SendToReport(
Dispatch(
{},
"Elapsed Time",
ScaleBox,
{Min( -1.344 ), Max( 370.36832 ), Inc( 100 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
9,
Base( 0, 0, 0, Item ID( "American", 1 ) ),
Base( 1, 0, 1, Item ID( "Delta", 1 ) ),
Base( 2, 0, 2, Item ID( "Northwest", 1 ) ),
Base( 3, 0, 3, Item ID( "United", 1 ) ),
Base( 4, 0, 4, Item ID( "US Airways", 1 ) ),
Base( 5, 0, 5, Item ID( "Southwest", 1 ) ),
Properties(
0,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "American", 1 )
),
Properties(
1,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "Delta", 1 )
),
Properties(
2,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "Northwest", 1 )
),
Properties(
3,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "United", 1 )
),
Properties(
4,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "US Airways", 1 )
),
Properties(
5,
{Marker Size( 2 ), Transparency( 0.2 )},
Item ID( "Southwest", 1 )
)
), Legend Model(
10,
Properties( 0, {Line Width( 5 )}, Item ID( "American", 1 ) ),
Properties( 1, {Line Width( 5 )}, Item ID( "Delta", 1 ) ),
Properties( 2, {Line Width( 5 )}, Item ID( "Northwest", 1 ) ),
Properties( 3, {Line Width( 5 )}, Item ID( "United", 1 ) ),
Properties( 4, {Line Width( 5 )}, Item ID( "US Airways", 1 ) ),
Properties( 5, {Line Width( 5 )}, Item ID( "Southwest", 1 ) )
)}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
15,
Description( "" ),
Pen Color( "black" );
Pen Size( 4 );
Y Function( 120 + Sin( x * 2 ) * 20, x );
)}
)
)
)
這個問題與您所描述的非常相似,但稍微複雜一些。實際上,所有段落都有兩個繪圖通道。第一遍允許 segs 繪製任何未選擇的內容,第二遍允許 segs 繪製任何選定的內容。有些段(例如標記段)會在兩次遍歷中繪製。其他段落(例如圖形腳本)沒有選定狀態,因此它們只是在第一個未選定通道期間繪製。最簡單的解決方案是執行@hogi建議的操作並添加一個選項,允許在任一通道期間進行繪圖,或者允許腳本與行狀態處理程序關聯,以便它可以具有更動態的繪圖能力正確的 z 順序。我可以想像一個包含大量圖形腳本的圖形,因此有些圖形腳本總是被遮擋,並且基於行選擇的繪圖順序也可以幫助這種情況。
我意識到您的範例是一個簡單的案例,只是為了展示問題,但我想知道您的特定問題確實與繪製線條的圖形腳本有關。如果是,可以改用 LineSeg 嗎?腳本的修改更接近您的目標
Names Default To Here( 1 );
table = New Table( "test table",
Add Rows( 15000 ),
<<NEW column=""></NEW>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="DaveB_0-1728324750394.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/68875i75127179C9D41C69/DaveB_0-1728324750394.png" role="button" title="DaveB_0-1728324750394.png" alt="DaveB_0-1728324750394.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P> </P>
<P>不幸的是,該範例仍然存在畫筆選擇問題。線段是可選擇的,但我們優先考慮標記,因此如果選擇了標記,則畫筆選擇(不使用 Shift 鍵)會取消選擇線。您可以單擊該線來重新選擇它,但如果有足夠的標記,則可能沒有任何地方可以單擊。無可否認,一個尷尬的解決方法是獲取行段的克隆版本,該版本在刷牙過程中不會取消選擇</P>
<CODE class=" language-jsl">Names Default To Here( 1 );
table = New Table( "test table",
Add Rows( 15000 ),
<<NEW column=""></NEW>
<P>另一個選擇是使用行狀態的資料表。這樣做的缺點是,lineseg 只會檢查第 1 行到第 n 行,其中 is 是行中的點數,因此為了在選擇任何行時選擇該行,需要添加許多不必要的點。</P>
<CODE class=" language-jsl">Names Default To Here( 1 );
table = New Table( "test table",
Add Rows( 15000 ),
<<NEW column=""></NEW>
<P> </P>
<P> </P>