在處理圖形和圖形時,我們很可能需要在圖形中填充顏色以突出顯示區域或將其與其他形狀區分開來。您可能知道如何遮擋常規形狀,但是怎麼樣不規則多邊形和輪廓 ?您可以使用Polygon()輕鬆地將其設置為任何圖形形狀。我們只需要數據點!

以上是我正在為患者招募預測工作的圖表(很快就找到關於此的博客文章)。點劃線為2.5 日和97.5 日 10,000次模擬的百分位數。紅色實線是模擬值的平均值。用顏色填充這個置信區間可以幫助人們理解登記預測的範圍,因此我探索瞭如何做到這一點。在開始時,我指定了三角形的三個頂點並得到了這個:

嗯...不太符合我的預期。有什麼問題?顯然這個圖形並不完全是一個三角形,雖然它確實看起來像一個。底部較寬,因此三角形陰影不能覆蓋整個置信區間帶。我們該如何解決這個問題?
要使用顏色填充圖形,首先需要知道形狀的邊界和構成邊界的數據點。在這種情況下,我的邊界是“三角形”的三個邊,數據點是2.5 日百分位和97.5 日百分。請注意,我不需要第三面,水平線段,因為一旦我構建了雙面, JMP 用直線自動連接兩個端點。但是如果你有一個不直的段,你需要數據點來告訴JMP陰影停止的位置。
接下來,在JSL中,我們從數據集中提取數據點,將數據保存在列中並對它們進行排序。
ds = Data Table( "graphbuilder" );
ds << select where(:data ==“Predicted 2.5%”);
dslow = ds << subset(
輸出表名稱(“Lower Percentile”),
精選行(1),
無形
);
dslow_sort = dslow << sort(By(:time),Order(Ascending));
ds << select where(:data ==“Predicted 97.5%”);
dsupp = ds << subset(
輸出表名稱(“Upper Percentile”),
精選行(1),
無形
);
dsupp_sort = dsupp << sort(By(:time),Order(Descending));
dslow和dsupp這兩個子集包含邊界的數據點,即兩條點劃線。請注意,我按升序對dslow進行了排序,但是由於JMP使用方向繪製邊界,因此按降序對dsupp進行排序。我選擇順時針繪製CI帶:從藍線和紅線的交點開始,沿著2.5上升日百分位數,並在97.5之後回歸日水平方面的百分位數。因此,97.5的數據點日百分位數需要按降序排列。
現在我們已經對數據點進行了排序,我們需要將它們放在一個名為“all”的矩陣中。矩陣中的x值是“xall”,矩陣中的y值是“yall”。這裡,時間是我的x軸,數字是我的y軸。
Col1 = Column( dslow_sort, "time" );
tl = col << GetAsMatrix;
Col1 = Column(dslow_sort,“number”);
nl = col << GetAsMatrix;
Col2 =列(dsupp_sort,“time”);
tu = col << GetAsMatrix;
col2 = Column(dsupp_sort,“number”);
nu = col << GetAsMatrix;
lower = tl || NL;
upper = tu || NU;
all = lower | / upper;
xall =全部[0,1];
yall =全部[0,2];
Pen Color( "red" );
填充顏色(“紅色”);
透明度(0.2);
多邊形(xall,yall);

最後一步很簡單:在Polygon()中調用矩陣並填充顏色。在Graph Builder語句或新窗口中使用上面第二個框中的代碼。你現在應該有一個完美的紅色陰影帶有一定程度的透明度!
最後的想法 :只要有數據點,就可以用顏色填充任何形狀的區域。下面是圖形腳本著色的另一個示例,它通過更改選項演示了您可以創建的眾多變體之一。

玩得開心!