<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP 13에 대한 추가 정보: JMP 13 미리보기 | JMP 그리고 Discovery Summit에서 실시간으로 JMP 13 발표 | JMP
존 폰테 Windows의 JMP 13에 일부 애니메이션 GIF 기능을 추가했습니다.
버블 플롯 애니메이션을 애니메이션 GIF로 저장
데이터 필터 애니메이션을 애니메이션 GIF로 저장
또 다른 예가 있습니다.

100년 미만의 역사를 지닌 거의 모든 브라우저는 애니메이션 GIF를 지원합니다.JMP 13에서는 이를 구축하는 기능을 지원합니다.첨부된 JSL은 그래프 프레임(축 없음, 제목 없음)에서 비트맵을 캡처하여 애니메이션 GIF에 저장하는 한 가지 방법을 보여줍니다.
애니메이션의 모든 프레임에는 고유한 지속 시간이 있을 수 있습니다. 일반적으로 모든 프레임의 지속 시간은 동일해야 합니다.루프 수를 지정할 수 있습니다.보시다시피 영원히 반복하는 것은 짜증스럽습니다.루프는 한 방향으로만 재생할 수 있습니다.반전되거나 바운스되는 것처럼 보이는 GIF가 보이면 이는 단일 방향 루프에 앞뒤로 이동하는 프레임이 있기 때문입니다.위의 루프는 단일 사인파에 대한 것입니다(세 개의 주기가 아닌 것처럼 보입니다).그럼에도 불구하고 130K 바이트에 19프레임으로 구성된 적당한 크기의 파일입니다.
아래 내용은 첨부파일과 동일해야 합니다.스크립트의 마지막 1/3에 있는 루프가 데이터 테이블의 데이터를 변경하여 그래프 빌더 출력을 조작한 다음 사진을 찍는 방법을 확인할 수 있습니다.중간 1/3은 그래프 빌더를 설정하고 있으며 이미지가 프레임 내부에서 가져오고 축과 레이블을 무시하므로 그렇게 복잡할 필요는 없을 것입니다.첫 번째 비트는 사용할 수 있는 매개변수 세트입니다.마지막 줄은 그래프를 열려고 시도합니다.
// 이 스크립트에는 애니메이션 gif 파일을 저장할 수 있는 Windows JMP 13이 필요합니다.
// 안타깝게도 Mac 버전의 JMP에서는 아직 이 GIF 기능을 지원하지 않습니다.
nBars = 50; // 애니메이션 막대는 몇 개입니까?
x크기=800; // 그림 크기
y크기=100;
n프레임 = 19; // 루프의 프레임 수
프레임MS = 1000/24; // 1/1000초 단위의 프레임 기간(1000/24 == 24FPS)
기간=3; // 부드러운 애니메이션 루프를 위해서는 정수여야 합니다.
targetFile = "$desktop/DeleteMeAnimated.gif";
// 애니메이션을 위한 데이터 테이블 템플릿을 만듭니다.
dt = 새 테이블( "animate", addrows(nBars), 새 열( "ID", Formula(row()) ), 새 열( "값", Formula(sin(2*pi()*row()/ nBars)) ) );
dt<<수식 실행; dt:값<<수식 삭제; // 수식을 제거합니다.그래프 빌더에는 누락되지 않은 초기 데이터가 필요합니다.
// 자리 표시자 그래프를 만듭니다.참고: 대화형 그래프 빌더를 사용하여 그래프를 만들고
// 이 JSL을 만들려면 저장 스크립트를 사용하세요!나중에 사소한 수정을 하세요.
gb = dt<<그래프 빌더(
크기( xsize, ysize ), 제어판 표시( 0 ), 범례 표시( 0 ), 바닥글 표시( 0 ), 눈금 잠금( 1 ),
변수( X( :ID ), Y( :값 ), 색상( :값 ) ), 요소( 막대( X, Y, 범례( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Ticks( 1 ), Label Row(
{자동 글꼴 크기( 0 ), 자동 눈금 표시( 0 ), 주요 레이블 표시( 0 ), 주요 눈금 표시( 0 ), 보조 눈금 표시( 0 )}
)} ),
디스패치({}, "값", ScaleBox,
{최소( -1.092929 ), 최대( 1.10606060606061 ), Inc( 0.5 ), 보조 틱( 1 ), 레이블 행(
{자동 글꼴 크기( 0 ), 자동 눈금 표시( 0 ), 주요 레이블 표시( 0 ), 주요 눈금 표시( 0 ), 보조 눈금 표시( 0 )}
)} ),
Dispatch( {}, "400", ScaleBox, {범례 모델( 9, 속성( 0,
{gradient( {색상 테마( "녹색에서 검정색에서 빨간색으로"), 배율 값( [-1 1] ), 레이블 형식( "고정 12월", 15, 1 ),
역방향 그라데이션( 1 ), N 라벨( 5 )}
)} ) )} ),
Dispatch( {}, "그래프 제목", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y 제목", TextEditBox, {Set Text( "" )} )
)
);
// 프레임 상자를 필요한 정확한 크기로 만듭니다. 나중에
// <
// 원하지 않는 경계선
(보고서(gb)[framebox(1)])<
기다려(0); // 그래프가 보이는지 확인합니다.필수는 아니지만 진행 상황을 보여줍니다.
( iFrame = 1, iFrame <= nFrames, iFrame++,
FrameFraction = iFrame / (기간*nFrames);
// 막대를 모두 위상에서 벗어나게 만듭니다.
For( iPhase = 1, iPhase <= nBars, iPhase++,
PhaseFraction = iPhase / nBars;
dt:Value[iPhase] = Sin( 기간 * (frameFraction * 2 * Pi() + PhaseFraction * 2 * Pi()) );
);
// 막대의 높이가 달라집니다. 사진을 찍다
gb << 업데이트창;
img = ( 보고서(gb)[framebox( 1 )] )<
전체 크기 = img<<크기;
// 3픽셀 테두리와 테두리선을 자릅니다.약간의 시행착오...
img<
//newsize=img<<크기; // 크기와 자르기를 알아냅니다.
//show(fullsize,newsize); // 매개변수
if ( iFrame == 1,
최종 이미지 = img; // 첫 번째 이미지로 애니메이션 GIF를 시작합니다.
, // 또 다른
최종이미지<
finalImage<
);
finalImage<
);
gb<<창 닫기;
close(dt,nosave);
finalImage<
show(파일 크기(대상파일));
open(대상파일); // 브라우저에서 데모할 수도 있습니다.