<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Más sobre JMP 13: Vista previa JMP 13 | JMP y Anuncio de JMP 13, en vivo desde Discovery Summit | JMP
juan.ponte se agregó alguna capacidad de GIF animado a JMP 13 en Windows,
Guarde una animación de Bubble Plot como un GIF animado
Guarde una animación de filtro de datos como un GIF animado
Aquí hay otro ejemplo.

Casi todos los navegadores con menos de 100 años admiten GIF animados.JMP 13 tiene soporte para construirlos.El JSL adjunto muestra una forma de capturar mapas de bits del marco de un gráfico (sin ejes, sin título) y almacenarlos en el GIF animado.
Cada cuadro de la animación puede tener su propia duración; generalmente todos los fotogramas deben tener la misma duración.Se puede especificar el número de bucles.Como puede ver, hacer bucles para siempre resulta molesto.Los bucles solo pueden reproducirse en una dirección.Si ve un GIF que parece retroceder o rebotar, es porque el bucle unidireccional tiene fotogramas que avanzan y retroceden.El bucle de arriba es para una única onda sinusoidal (no los tres períodos que parece ser).Aun así, es un archivo moderadamente grande: 19 fotogramas en 130K bytes.
Lo siguiente debe ser el mismo que el archivo adjunto.Puede ver cómo el bucle en el último tercio del script cambia los datos en la tabla de datos para manipular la salida del generador de gráficos y luego toma una fotografía.El tercio medio está configurando el generador de gráficos y probablemente no necesitaba ser tan complicado ya que la imagen se tomó desde dentro del marco e ignora los ejes y las etiquetas.El primer bit es un conjunto de parámetros con los que puedes jugar.La última línea intenta abrir el gráfico.
// Este script requiere Windows JMP 13, que puede guardar archivos gif animados.
// Lamentablemente, la versión para Mac de JMP aún no admite esta función GIF.
nBarras = 50; // ¿cuántas barras de animación?
xtamaño=800; // dimensiones de la imagen
ytamaño=100;
nMarcos = 19; // cuantos fotogramas hay en el bucle
marcoMS = 1000/24; // duración del fotograma en 1/1000 de segundo (1000/24 == 24 FPS)
periodos=3; // debe ser un número entero para que la animación se realice sin problemas
targetFile = "$desktop/DeleteMeAnimated.gif";
// crea una plantilla de tabla de datos para la animación
dt = Nueva tabla( "animar", addrows(nBars), Nueva columna( "ID", fórmula(fila()) ), Nueva columna( "Valor", fórmula(sin(2*pi()*fila()/ nBarras)) ) );
dt<
// hacer un gráfico de marcador de posición.NOTA: use Graph Builder interactivo para hacer el gráfico, y
// ¡usa Save Script para crear este JSL!Haz ediciones menores más tarde.
gb = dt<
Tamaño (xsize, ysize), Mostrar panel de control (0), Mostrar leyenda (0), Mostrar pie de página (0), Bloquear escalas (1),
Variables( X( :ID ), Y( :Valor ), Color( :Valor ) ), Elementos( Barra( X, Y, Leyenda( 9 ) ) ),
SendToReport( Envío( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBarras+1 ), Inc( 2 ), Ticks menores( 1 ), Etiqueta fila(
{Tamaño de fuente automático (0), marcas de verificación automáticas (0), mostrar etiquetas principales (0), mostrar marcas principales (0), mostrar marcas menores (0)}
)} ),
Despacho( {}, "Valor", ScaleBox,
{Min( -1.092929 ), Max( 1.10606060606061 ), Inc( 0.5 ), Ticks menores( 1 ), Fila de etiquetas(
{Tamaño de fuente automático (0), marcas de verificación automáticas (0), mostrar etiquetas principales (0), mostrar marcas principales (0), mostrar marcas menores (0)}
)} ),
Despacho( {}, "400", ScaleBox, {Modelo de leyenda( 9, Propiedades( 0,
{degradado( {Tema de color( "Verde a Negro a Rojo"), Valores de escala( [-1 1] ), Formato de etiqueta( "Dic fijo", 15, 1),
Degradado inverso (1), N etiquetas (5)}
)} ) )} ),
Despacho( {}, "título del gráfico", TextEditBox, {Establecer texto( "" )}),
Despacho( {}, "título X", TextEditBox, {Establecer texto( "" )} ),
Despacho( {}, "Título Y", TextEditBox, {Establecer texto( "" )} )
)
);
// haz que el cuadro del marco tenga el tamaño exacto necesario; más tarde
// el <
// línea fronteriza no deseada
(informe(gb)[framebox(1)])<
esperar(0); // asegúrese de que el gráfico sea visible.No es necesario, pero muestra progreso.
Para (iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (períodos*nFrames);
// hace que todas las barras estén fuera de fase
Para (iFase = 1, iFase <= nBars, iFase++,
fracción de fase = iFase / nBarras;
dt:Valor[iPhase] = Sin( periodos * (fracción de marco * 2 * Pi() + fracción de fase * 2 * Pi()) );
);
// las barras tienen nuevas alturas; toma una foto
gb << ventana de actualización;
img = ( informe(gb)[framebox( 1 )] )<
tamaño completo = img<
// recorta el borde de 3 píxeles y la línea del borde.Un poco de prueba y error...
img<
//newsize=img<
//mostrar(tamaño completo,nuevo tamaño); // parámetros
si (iFrame == 1,
Imagen final = img; // inicia el gif animado con la primera imagen
, // demás
Imagen final<
finalImage<
);
finalImage<
);
gb<
cerrar(dt,nosave);
finalImage<
mostrar (tamaño de archivo (archivo de destino));
abrir(archivodestino); // demostración en un navegador, tal vez.