<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />有關 JMP 13 的更多信息:預覽 JMP 13 | JMP和宣布 JMP 13,在探索峰會現場直播 | JMP
約翰龐特在 Windows 上為 JMP 13 添加了一些動畫 GIF 功能,
將氣泡圖動畫保存為動畫 GIF
將數據過濾器動畫另存為動畫 GIF
這是另一個例子。

幾乎所有不到 100 年曆史的瀏覽器都支持 GIF 動畫。JMP 13 支持構建它們。附加的 JSL 顯示了一種從圖形框架(無軸、無標題)捕獲位圖並將它們存儲在動畫 GIF 中的方法。
動畫中的每一幀都可以有自己的持續時間;通常,所有幀都應具有相同的持續時間。可以指定循環數。如您所見,永遠循環很煩人。循環只能在一個方向上播放。如果您看到一個 GIF 圖像似乎反轉或跳動,那是因為單向循環中有幀向前和向後移動。上面的循環是針對單個正弦波的(不是它看起來的三個週期)。儘管如此,它還是一個中等大小的文件:19 幀,130K 字節。
以下應與附件相同。您可以看到腳本最後 1/3 的循環如何更改數據表中的數據以操縱圖形構建器輸出,然後拍照。中間的 1/3 是設置圖形生成器,可能不需要那麼複雜,因為圖像是從框架內部拍攝的,忽略了軸和標籤。第一位是您可以使用的一組參數。最後一行嘗試打開圖表。
// 此腳本需要 Windows JMP 13,它可以保存動畫 gif 文件。
// 遺憾的是,JMP 的 Mac 版本尚不支持此 GIF 功能。
n 條 = 50; // 有多少個動畫條?
x大小=800; // 圖片尺寸
尺寸=100;
n 幀 = 19; //循環多少幀
幀MS = 1000/24; // 以 1/1000 秒為單位的幀持續時間 (1000/24 == 24 FPS)
週期=3; // 必須是平滑動畫循環的整數
targetFile = "$desktop/DeleteMeAnimated.gif";
// 為動畫製作數據表模板
dt = New Table( "animate", addrows(nBars), New Column( "ID", formula(row()) ), New Column( "Value", 公式(sin(2*pi()*row()/ nBars)) ) );
dt<<運行公式; dt:值<<刪除公式; // 刪除公式。圖形生成器需要非缺失的初始數據
// 製作一個佔位圖。注意:使用交互式 Graph Builder 製作圖表,並且
// 使用保存腳本製作這個 JSL!稍後做小的修改。
gb = dt<<圖形生成器(
大小(xsize,ysize),顯示控制面板(0),顯示圖例(0),顯示頁腳(0),鎖定比例(1),
變量( X( :ID ), Y( :Value ), 顏色( :Value ) ), 元素( Bar( X, Y, Legend( 9 ) ) ),
SendToReport( 調度( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Ticks( 1 ), Label Row(
{自動字體大小(0),自動刻度線(0),顯示主要標籤(0),顯示主要刻度(0),顯示次要刻度(0)}
)}),
調度({},“值”,ScaleBox,
{Min( -1.092929 ), Max( 1.10606060606061 ), Inc( 0.5 ), Minor Ticks( 1 ), Label Row(
{自動字體大小(0),自動刻度線(0),顯示主要標籤(0),顯示主要刻度(0),顯示次要刻度(0)}
)}),
調度({},“400”,ScaleBox,{圖例模型(9,屬性(0,
{gradient( {Color Theme( "Green to Black to Red" ), Scale Values( [-1 1] ), Label Format( "Fixed Dec", 15, 1 ),
反向梯度(1),N個標籤(5)}
)} ) )} ),
Dispatch({}, "圖表標題", TextEditBox, {Set Text( "" )} ),
Dispatch({}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch({}, "Y title", TextEditBox, {Set Text( "" )} )
)
);
// 使框架框達到所需的確切大小;之後
// <
//不需要的邊框線
(報告(gb)[framebox(1)])<
等待(0); // 確保圖形可見。不需要,但顯示進度。
對於( iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (periods*nFrames);
// 使條形圖全部異相
對於 ( iPhase = 1, iPhase <= nBars, iPhase++,
phaseFraction = iPhase / nBars;
dt:Value[iPhase] = Sin( periods * (frameFraction * 2 * Pi() + phaseFraction * 2 * Pi()) );
);
// 條形有新的高度;拍照
gb << 更新窗口;
img = ( report(gb)[framebox( 1 )] )<
全尺寸 = img<<尺寸;
// 裁剪 3 像素邊框和邊框線。一點點試錯……
img<
//新聞大小=img<<大小; // 確定大小和裁剪
//顯示(全尺寸,新聞尺寸); // 參數
如果 ( iFrame == 1,
最終圖像= img; // 從第一張圖片開始動畫 gif
, // 別的
最終圖像<<添加幀; // 為後續圖像添加幀並設置新幀的
finalImage<
);
finalImage<
);
gb<<關閉窗口;
關閉(dt,不保存);
finalImage<
顯示(文件大小(目標文件));
打開(目標文件); // 也許在瀏覽器中演示。