<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />有關 JMP 13 的更多資訊:預覽 JMP 13 |聯合管理計劃和探索高峰會直播宣布 JMP 13 |聯合管理計劃
約翰龐特在 Windows 上的 JMP 13 中加入了一些動畫 GIF 功能,
將氣泡圖動畫另存為動畫 GIF
將資料過濾器動畫另存為動畫 GIF
這是另一個例子。

幾乎所有歷史不到 100 年的瀏覽器都支援動畫 GIF。JMP 13 支援建構它們。附加的 JSL 顯示了一種從圖形框架(無軸、無標題)捕獲點陣圖並將其儲存在動畫 GIF 中的方法。
動畫中的每一幀都可以有自己的持續時間;一般來說,所有幀應該具有相同的持續時間。可以指定循環次數。正如您所看到的,永遠循環很煩人。循環只能朝一個方向播放。如果您看到 GIF 出現反轉或彈跳,這是因為單向循環具有向前和向後的幀。上面的循環適用於單一正弦波(而不是看起來的三個週期)。即便如此,它仍然是一個相當大的檔案:130K 位元組中有 19 幀。
以下應與附件相同。您可以看到腳本最後 1/3 中的循環如何更改資料表中的資料以操作圖形產生器輸出,然後拍照。中間的 1/3 正在設定圖形產生器,可能不需要那麼複雜,因為圖像是從框架內部獲取的,並且忽略了軸和標籤。第一個位元是一組可以使用的參數。最後一行嘗試開啟圖表。
// 此腳本需要 Windows JMP 13,它可以儲存動畫 gif 檔案。
// 不幸的是,Mac 版本的 JMP 尚不支援此 GIF 功能。
nBars = 50; // 有幾個動畫條?
x大小=800; // 圖片尺寸
y 大小=100;
n 幀 = 19; // 循環有多少幀
幀 MS = 1000/24; // 幀的持續時間,以 1/1000 秒為單位 (1000/24 == 24 FPS)
週期=3; // 必須是一個整數才能平滑的動畫循環
targetFile = "$desktop/DeleteMeAnimated.gif";
// 為動畫製作資料表模板
dt = 新表( "animate", addrows(nBars), 新列( "ID", 公式(row()) ), 新列( "值", 公式(sin(2*pi()*row()/ nBars)) ) );
dt<<運算公式; dt:值<<刪除公式; // 刪除公式。圖形產生器需要非缺失的初始數據
// 製作佔位圖。注意:使用互動式圖形產生器來製作圖形,並且
// 使用儲存腳本來製作這個 JSL!稍後進行較小的編輯。
gb = dt<<圖形產生器(
大小( xsize, ysize ), 顯示控制面板( 0 ), 顯示圖例( 0 ), 顯示頁尾( 0 ), 鎖定比例( 1 ),
變數( X( :ID )、Y( :值 )、顏色( :值 ) )、元素(長條圖( X, Y, 圖例( 9 ) ) ),
SendToReport( 調度( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), 小刻度( 1 ), 標籤行(
{自動字體大小( 0 )、自動刻度線( 0 )、顯示主要標籤( 0 )、顯示主刻度( 0 )、顯示次要刻度( 0 )}
)} ),
調度({},“值”,ScaleBox,
{最小值( -1.092929 ), 最大值( 1.10606060606061 ), Inc( 0.5 ), 小刻度( 1 ), 標籤行(
{自動字體大小( 0 )、自動刻度線( 0 )、顯示主要標籤( 0 )、顯示主刻度( 0 )、顯示次要刻度( 0 )}
)} ),
Dispatch( {}, "400", ScaleBox, {圖例模型( 9, 屬性( 0,
{漸層( {顏色主題( "綠色到黑到紅" ), 比例值( [-1 1] ), 標籤格式( "固定十進位", 15, 1 ),
反向梯度( 1 ), N 個標籤( 5 )}
)} ) )} ),
Dispatch( {}, "圖表標題", TextEditBox, {設定文字( "" )} ),
Dispatch( {}, "X 標題", TextEditBox, {設定文字( "" )} ),
Dispatch( {}, "Y 標題", TextEditBox, {設定文字( "" )} )
)
);
// 使框架盒達到所需的確切尺寸;之後
// <
// 不需要的邊框線
(報告(gb)[framebox(1)])<
等待(0); // 確保圖表可見。不是必需的,但顯示進度。
對於( iFrame = 1, iFrame <= nFrames, iFrame++,
FrameFraction = iFrame / (週期*nFrames);
// 使條形全部異相
對於( iPhase = 1, iPhase <= nBars, iPhase++,
相位分數 = iPhase / nBars;
dt:Value[iPhase] = Sin( 週期 * (frameFraction * 2 * Pi() + PhaseFraction * 2 * Pi()) );
);
// 條形有新的高度;拍張照片
gb << 更新視窗;
img = ( 報告(gb)[framebox( 1 )] )<
全尺寸 = img<< 尺寸;
// 裁切 3 像素邊框和邊框線。一點點嘗試和錯誤...
img<
//newsize=img<<大小; // 計算出尺寸和裁剪
//顯示(全尺寸,新尺寸); // 參數
如果 ( iFrame == 1,
最終圖像 = img; // 從第一張圖片開始動畫 gif
, // 別的
最終映像<
FinalImage<
);
FinalImage<
);
gb<<關閉視窗;
關閉(dt,nosave);
FinalImage<
顯示(檔案大小(目標檔案));
開啟(目標檔案); // 也許可以在瀏覽器中示範。