<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Maggiori informazioni su JMP 13: Anteprima JMP 13 | JMP E Annuncio di JMP 13, in diretta dal Discovery Summit | JMP
giovanni.ponte aggiunte alcune funzionalità GIF animate a JMP 13 su Windows,
Salva un'animazione del grafico a bolle come GIF animata
Salva un'animazione del filtro dati come GIF animata
Ecco un altro esempio.

Quasi tutti i browser con meno di 100 anni supportano le GIF animate.JMP 13 supporta la loro creazione.Il JSL allegato mostra un modo per catturare le bitmap dal frame di un grafico (senza assi, senza titolo) e memorizzarle nella GIF animata.
Ogni fotogramma dell'animazione può avere una propria durata; generalmente tutti i fotogrammi dovrebbero avere la stessa durata.È possibile specificare il numero di loop.Come puoi vedere, il loop continuo diventa fastidioso.I loop possono essere riprodotti solo in una direzione.Se vedi una GIF che sembra invertire o rimbalzare, è perché il ciclo unidirezionale ha fotogrammi che vanno avanti e indietro.Il ciclo qui sopra è per una singola onda sinusoidale (non per i tre periodi che sembra essere).Anche così, si tratta di un file moderatamente grande: 19 fotogrammi in 130K byte.
Quanto segue dovrebbe essere uguale all'allegato.Puoi vedere come il ciclo nell'ultimo 1/3 dello script sta modificando i dati nella tabella dati per manipolare l'output del generatore di grafici, quindi scattare una foto.Il 1/3 centrale sta impostando il generatore di grafici e probabilmente non era necessario che fosse così complicato poiché l'immagine è stata scattata dall'interno del fotogramma e ignora gli assi e le etichette.Il primo bit è un insieme di parametri con cui puoi giocare.L'ultima riga tenta di aprire il grafico.
// Questo script richiede Windows JMP 13, che può salvare file GIF animati.
// Sfortunatamente la versione Mac di JMP non supporta ancora questa funzionalità GIF.
nBar = 50; // quante barre animate?
dimensione x=800; // dimensioni dell'immagine
dimensione y=100;
nFrame = 19; // quanti fotogrammi nel ciclo
frameMS = 1000/24; // durata del fotogramma in 1/1000 di secondo (1000/24 == 24 FPS)
periodi=3; // deve essere un numero intero per un ciclo di animazione fluido
targetFile = "$desktop/DeleteMeAnimated.gif";
// crea un modello di tabella dati per l'animazione
dt = Nuova tabella( "animare", addrows(nBars), Nuova colonna( "ID", formula(row()) ), Nuova colonna( "Valore", formula(sin(2*pi()*row()/ nBar)) ) );
dt<
// crea un grafico segnaposto.NOTA: utilizzare il Costruttore di grafici interattivo per creare il grafico e
// usa Save Script per creare questo JSL!Apporta modifiche minori in seguito.
gb = dt<
Dimensioni (xsize, ysize), Mostra pannello di controllo (0), Mostra legenda (0), Mostra piè di pagina (0), Blocca scale (1),
Variabili( X( :ID ), Y( :Valore ), Colore( :Valore ) ), Elementi( Barra( X, Y, Legenda( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Tick( 1 ), Riga etichetta(
{Dimensione carattere automatica( 0 ), Segni di spunta automatici( 0 ), Mostra etichette principali( 0 ), Mostra segni di spunta principali( 0 ), Mostra segni di spunta secondari( 0 )}
)} ),
Spedizione( {}, "Valore", ScaleBox,
{Min( -1,092929 ), Max( 1,10606060606061 ), Inc( 0,5 ), Grafici minori( 1 ), Riga etichetta(
{Dimensione carattere automatica( 0 ), Segni di spunta automatici( 0 ), Mostra etichette principali( 0 ), Mostra segni di spunta principali( 0 ), Mostra segni di spunta secondari( 0 )}
)} ),
Spedizione( {}, "400", ScaleBox, {Modello legenda( 9, Proprietà( 0,
{gradiente( {Tema colore( "Da verde a nero a rosso" ), Valori scala( [-1 1] ), Formato etichetta( "Dec fisso", 15, 1 ),
Gradiente inverso( 1 ), N etichette( 5 )}
)} ) )} ),
Invio( {}, "titolo del grafico", TextEditBox, {Imposta testo( "" )} ),
Invio( {}, "X titolo", TextEditBox, {Imposta testo( "" )} ),
Spedizione( {}, "Y titolo", TextEditBox, {Imposta testo( "" )} )
)
);
// rende la scatola del frame della dimensione esatta necessaria; Dopo
// il <
// linea di confine indesiderata
(report(gb)[framebox(1)])<
attendere(0); // assicurati che il grafico sia visibile.Non richiesto, ma mostra i progressi.
For( iFrame = 1, iFrame <= nFrame, iFrame++,
frameFraction = iFrame / (periodi*nFrames);
// rende le barre tutte fuori fase
For( iPhase = 1, iPhase <= nBars, iPhase++,
faseFrazione = iPhase / nBars;
dt:Value[iPhase] = Sin( periodi * (frameFraction * 2 * Pi() +phaseFraction * 2 * Pi()) );
);
// le barre hanno nuove altezze; Fai una foto
gb <
img = (report(gb)[framebox( 1 )] )<
dimensione intera = img<
// ritaglia il bordo da 3 pixel e la linea del bordo.Un po' di tentativi ed errori...
img<
//nuova dimensione=img<
//mostra(dimensione intera,nuova dimensione); // parametri
se (iFrame == 1,
immagine finale = img; // avvia la gif animata con la prima immagine
, // altro
finalImage<
finalImage<
);
finalImage<
);
it<
chiudi(dt,nosalva);
finalImage<
mostra(dimensionefile(filedestinazione));
open(filedestinazione); // demo in un browser, forse.