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

Casi todos los navegadores de menos de 100 años admiten GIF animados.JMP 13 tiene soporte para construirlos.El JSL adjunto muestra una forma de capturar los mapas de bits del marco de un gráfico (sin ejes, sin título) y almacenarlos en el GIF animado.
Cada fotograma de la animación puede tener su propia duración; en general, todos los marcos deben tener la misma duración.Se puede especificar el número de bucles.Como puede ver, hacer bucles para siempre se vuelve molesto.Los bucles solo pueden reproducirse en una dirección.Si ve un GIF que parece invertirse o rebotar, se debe a que el bucle unidireccional tiene fotogramas que avanzan y retroceden.El ciclo anterior es para una sola onda sinusoidal (no los tres períodos que parece ser).Aun así, es un archivo medianamente grande: 19 fotogramas en 130K bytes.
Lo siguiente debe ser lo mismo que el archivo adjunto.Puede ver cómo el bucle en el último 1/3 de la secuencia de comandos cambia los datos en la tabla de datos para manipular la salida del generador de gráficos y luego toma una fotografía.El 1/3 del medio está configurando el generador de gráficos y probablemente no necesitaba ser tan complicado ya que la imagen se tomó desde el interior 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.
// Desafortunadamente, la versión para Mac de JMP aún no es compatible con esta función GIF.
nBarras = 50; // ¿Cuántas barras animadas?
xtamaño=800; // dimensiones de la imagen
ytamaño=100;
nFrames = 19; // cuantos fotogramas en bucle
marcoMS = 1000/24; // duración del cuadro en 1/1000 de segundo (1000/24 == 24 FPS)
periodos=3; // debe ser un número entero para un bucle de animación suave
targetFile = "$desktop/DeleteMeAnimated.gif";
// hacer una plantilla de tabla de datos para la animación
dt = Nueva tabla ("animar", agregar filas (nBarras), 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 Guardar script para hacer 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( Despacho( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Ticks( 1 ), Label Row(
{Tamaño de fuente automático (0), Marcas de graduación automáticas (0), Mostrar etiquetas principales (0), Mostrar marcas principales (0), Mostrar marcas secundarias (0)}
)} ),
Envío( {}, "Valor", ScaleBox,
{Min (-1.092929), Max (1.10606060606061), Inc (0.5), Marcas menores (1), Fila de etiqueta (
{Tamaño de fuente automático (0), Marcas de graduación automáticas (0), Mostrar etiquetas principales (0), Mostrar marcas principales (0), Mostrar marcas secundarias (0)}
)} ),
Despacho ({}, "400", ScaleBox, {Modelo de leyenda (9, Propiedades (0,
{gradiente ({Tema de color ("Verde a negro a rojo"), Valores de escala ([-1 1]), Formato de etiqueta ("Dic fijo", 15, 1),
Gradiente inverso (1), N etiquetas (5)}
)} ) )} ),
Envío( {}, "título del gráfico", TextEditBox, {Establecer texto( "" )} ),
Despacho ({}, "Título X", TextEditBox, {Establecer texto ( "" )} ),
Despacho ({}, "Título Y", TextEditBox, {Establecer texto ("" )})
)
);
// hacer que la caja del marco tenga el tamaño exacto necesario; más tarde
// el <
// línea de borde no deseada
(report(gb)[framebox(1)])<
esperar (0); // asegúrese de que el gráfico sea visible.No es obligatorio, pero muestra el progreso.
Para (iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (períodos*nFrames);
// hace que las barras estén desfasadas
For( iFase = 1, iFase <= nBarras, iFase++,
faseFracción = iPhase / nBars;
dt:Valor[iPhase] = Sin( períodos * (frameFraction * 2 * Pi() + phaseFraction * 2 * Pi()) );
);
// las barras tienen nuevas alturas; toma una foto
gb << ventana de actualización;
img = (report(gb)[framebox( 1 )] )<
tamaño completo = img<
// recortar el borde de 3 píxeles y la línea del borde.Un poco de prueba y error...
img<
//nuevotamaño=img<
// mostrar (tamaño completo, tamaño nuevo); // parámetros
si (iFrame == 1,
imagen final = img; // inicia el gif animado con la primera imagen
, // demás
imagenfinal<
imagenfinal<
);
finalImage<
);
gb<
cerrar(dt,nosave);
imagenfinal<
mostrar (tamaño de archivo (archivo de destino));
open(archivoobjetivo); // demostración en un navegador, tal vez.