Subscribe Bookmark RSS Feed

Saving JMP animation

aumair

Occasional Contributor

Joined:

Feb 9, 2017

Hello, I am quite new to JMP and have a question: Is it possible to save animation?

For example, if I do Fit Y by X on some table and  then use data filter animation. Would it be possible to save the animation/clip?

Thanks!

  

2 ACCEPTED SOLUTIONS

Accepted Solutions
Justin_Chilton

Joined:

Aug 27, 2015

Solution

If you are using JMP 13 on Windows, you can use the new JSL functionality for creating animated GIFs to save your Data Filter animation.

Below is an example that will create a Graph Builder with a Local Data Filter and an animated GIF will be saved and opened. For more info, check out @JohnPonte's post about animated GIFs using Bubble Plot. I borrowed a lot of code from his hurricanes example in the script below. Theoretically, this can work on a current window that you have open if you run everything starting with the line "report = Current Report()."

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
	Show Control Panel( 0 ),
	Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
	Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
	Local Data Filter(
		Add Filter(
			columns( :age ),
			Where( :age == 12 ),
			Display( :age, Size( 202, 114 ), List Display )
		)
	)
);

report = Current Report();

ldf_listBox = report[ListBoxBox(1)];

numLevels = NItems(ldf_ListBox << Get ITems);

// Create a new image, same size as the graph we are going to capture
graphFrame = report[FrameBox(1)] << getPicture();
{w, h} = graphFrame << getSize();
img = newImage(w, h);

for(i=1,i<=numLevels,i++,
	
	// deselect old selection
	selectedItems = ldf_listBox << Get Selected Indices;
	for(k=1,k<=nitems(selectedItems),k++,
		ldf_listBox << set selected(selectedItems[k],0);
	);
	
	// set the next item selected
	ldf_listBox << set selected(i);
	
	wait(0); // wait for the display to update
	// Capture frame for current graph and save to animated image
	graphFrame = report[FrameBox(1)] << getPicture();
	{r, g, b} = graphFrame << getPixels("rgb");
	img << addFrame();
	img << setFrameDuration(1000);  // Time between frames, in ms
	img << setPixels("rgb", {r, g, b});	
	wait(0.5); // for demonstration purposes
);

// Remove inital blank frame
img << removeFrame(0);

// Write out animated image
img << saveImage ("$temp\animated.gif", gif);

// open the gif
open("$temp\animated.gif");

Edited to add the resulting GIF file:Resulting animated gifResulting animated gif

 

 

Justin
JohnPonte

Staff

Joined:

Jun 17, 2013

Solution

You can find another example of saving an animated GIF with a Data Filter here: Save a Data Filter animation as an animated GIF.

 

 

3 REPLIES
Justin_Chilton

Joined:

Aug 27, 2015

Solution

If you are using JMP 13 on Windows, you can use the new JSL functionality for creating animated GIFs to save your Data Filter animation.

Below is an example that will create a Graph Builder with a Local Data Filter and an animated GIF will be saved and opened. For more info, check out @JohnPonte's post about animated GIFs using Bubble Plot. I borrowed a lot of code from his hurricanes example in the script below. Theoretically, this can work on a current window that you have open if you run everything starting with the line "report = Current Report()."

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
	Show Control Panel( 0 ),
	Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
	Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
	Local Data Filter(
		Add Filter(
			columns( :age ),
			Where( :age == 12 ),
			Display( :age, Size( 202, 114 ), List Display )
		)
	)
);

report = Current Report();

ldf_listBox = report[ListBoxBox(1)];

numLevels = NItems(ldf_ListBox << Get ITems);

// Create a new image, same size as the graph we are going to capture
graphFrame = report[FrameBox(1)] << getPicture();
{w, h} = graphFrame << getSize();
img = newImage(w, h);

for(i=1,i<=numLevels,i++,
	
	// deselect old selection
	selectedItems = ldf_listBox << Get Selected Indices;
	for(k=1,k<=nitems(selectedItems),k++,
		ldf_listBox << set selected(selectedItems[k],0);
	);
	
	// set the next item selected
	ldf_listBox << set selected(i);
	
	wait(0); // wait for the display to update
	// Capture frame for current graph and save to animated image
	graphFrame = report[FrameBox(1)] << getPicture();
	{r, g, b} = graphFrame << getPixels("rgb");
	img << addFrame();
	img << setFrameDuration(1000);  // Time between frames, in ms
	img << setPixels("rgb", {r, g, b});	
	wait(0.5); // for demonstration purposes
);

// Remove inital blank frame
img << removeFrame(0);

// Write out animated image
img << saveImage ("$temp\animated.gif", gif);

// open the gif
open("$temp\animated.gif");

Edited to add the resulting GIF file:Resulting animated gifResulting animated gif

 

 

Justin
JohnPonte

Staff

Joined:

Jun 17, 2013

Solution

You can find another example of saving an animated GIF with a Data Filter here: Save a Data Filter animation as an animated GIF.

 

 

aumair

Occasional Contributor

Joined:

Feb 9, 2017

Thanks a lot!:)