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

100년 미만의 거의 모든 브라우저는 애니메이션 GIF를 지원합니다.JMP 13은 이를 구축할 수 있도록 지원합니다.첨부된 JSL은 그래프 프레임(축 없음, 제목 없음)에서 비트맵을 캡처하여 애니메이션 GIF에 저장하는 한 가지 방법을 보여줍니다.
애니메이션의 모든 프레임은 고유한 기간을 가질 수 있습니다. 일반적으로 모든 프레임의 지속 시간은 동일해야 합니다.루프 수를 지정할 수 있습니다.보시다시피 무한 루프는 성가신 일입니다.루프는 한 방향으로만 재생될 수 있습니다.역방향 또는 튀는 것처럼 보이는 GIF가 표시되는 것은 하나의 방향 루프에 앞뒤로 이동하는 프레임이 있기 때문입니다.위의 루프는 단일 사인파에 대한 것입니다(세 개의 주기가 아닌 것처럼 보임).그럼에도 불구하고 130K 바이트에 19개 프레임으로 구성된 적당히 큰 파일입니다.
다음은 첨부파일과 동일해야 합니다.스크립트의 마지막 1/3에 있는 루프가 데이터 테이블의 데이터를 변경하여 그래프 빌더 출력을 조작한 다음 사진을 찍는 방법을 볼 수 있습니다.가운데 1/3은 그래프 빌더를 설정하는 중이며 프레임 내부에서 이미지를 가져오고 축과 레이블을 무시하기 때문에 그렇게 복잡할 필요가 없었을 것입니다.첫 번째 비트는 사용할 수 있는 매개변수 세트입니다.마지막 줄은 그래프 열기를 시도합니다.
// 이 스크립트는 애니메이션 gif 파일을 저장할 수 있는 Windows JMP 13이 필요합니다.
// 유감스럽게도 JMP의 Mac 버전은 아직 이 GIF 기능을 지원하지 않습니다.
n바 = 50; // 애니메이션 막대는 몇 개입니까?
x크기=800; // 그림 크기
크기=100;
nFrame = 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", formula(sin(2*pi()*row()/ n바)) ) );
dt<<실행 공식; dt:값<<공식 삭제; // 수식을 제거합니다.누락되지 않은 초기 데이터는 그래프 빌더에 필요합니다.
// 자리 표시자 그래프를 만듭니다.참고: 대화형 Graph Builder를 사용하여 그래프를 만들고
// 스크립트 저장을 사용하여 이 JSL을 만드세요!나중에 사소한 편집을 수행하십시오.
gb = dt<<그래프 빌더(
크기( xsize, ysize ), 제어판 표시( 0 ), 범례 표시( 0 ), 바닥글 표시( 0 ), 스케일 잠금( 1 ),
변수( X( :ID ), Y( :값 ), 색상( :값 ) ), 요소( 막대( X, Y, 범례( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{최소( 0 ), 최대( nBars+1 ), Inc( 2 ), 작은 눈금( 1 ), 레이블 행(
{자동 글꼴 크기( 0 ), 자동 눈금 표시( 0 ), 주요 레이블 표시( 0 ), 주요 눈금 표시( 0 ), 작은 눈금 표시( 0 )}
)} ),
디스패치( {}, "값", ScaleBox,
{최소( -1.092929 ), 최대( 1.10606060606061 ), Inc( 0.5 ), 작은 눈금( 1 ), 레이블 행(
{자동 글꼴 크기( 0 ), 자동 눈금 표시( 0 ), 주요 레이블 표시( 0 ), 주요 눈금 표시( 0 ), 작은 눈금 표시( 0 )}
)} ),
디스패치( {}, "400", ScaleBox, {범례 모델( 9, 속성( 0,
{gradient( {색상 테마( "녹색에서 검정색에서 빨간색으로" ), 배율 값( [-1 1] ), 레이블 형식( "고정 12월", 15, 1 ),
역 그라데이션( 1 ), N 레이블( 5 )}
)} ) )} ),
Dispatch( {}, "그래프 제목", TextEditBox, {텍스트 설정( "" )} ),
Dispatch( {}, "X 제목", TextEditBox, {텍스트 설정( "" )} ),
Dispatch( {}, "Y 제목", TextEditBox, {텍스트 설정( "" )} )
)
);
// 프레임 상자를 필요한 정확한 크기로 만듭니다. 나중에
// << 자르기는 x 크기를 y 크기로 만들고 제거합니다.
// 원하지 않는 경계선
(report(gb)[framebox(1)])<
대기(0); // 그래프가 보이는지 확인합니다.필수는 아니지만 진행률을 보여줍니다.
For( 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(전체 크기, 새 크기); // 매개변수
if ( iFrame == 1,
최종 이미지 = img; // 첫 번째 이미지로 애니메이션 GIF를 시작합니다.
, // 또 다른
최종 이미지<
finalImage<
);
finalImage<
);
gb<<창닫기;
닫기(dt,nosave);
finalImage<
show(filesize(targetFile));
open(타겟파일); // 브라우저에서 데모할 수도 있습니다.