<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />En savoir plus sur JMP 13 : Aperçu JMP 13 | JMP et Annonce de JMP 13, en direct du Discovery Summit | JMP
jean.ponte ajouté une fonctionnalité GIF animée à JMP 13 sous Windows,
Enregistrer une animation Bubble Plot en tant que GIF animé
Enregistrer une animation de filtre de données en tant que GIF animé
Voici un autre exemple.

Presque tous les navigateurs de moins de 100 ans prennent en charge les GIF animés.JMP 13 prend en charge leur construction.Le JSL ci-joint montre une façon de capturer les bitmaps à partir du cadre d'un graphique (pas d'axes, pas de titre) et de les stocker dans le GIF animé.
Chaque image de l'animation peut avoir sa propre durée ; généralement, toutes les trames doivent avoir la même durée.Le nombre de boucles peut être spécifié.Comme vous pouvez le voir, boucler pour toujours devient ennuyeux.Les boucles ne peuvent jouer que dans un sens.Si vous voyez un GIF qui semble s'inverser ou rebondir, c'est parce que la boucle unidirectionnelle a des images qui vont en avant et en arrière.La boucle ci-dessus est pour une seule onde sinusoïdale (pas les trois périodes qu'elle semble être).Même ainsi, il s'agit d'un fichier modérément volumineux : 19 images dans 130 K octets.
Ce qui suit doit être identique à la pièce jointe.Vous pouvez voir comment la boucle dans le dernier tiers du script modifie les données de la table de données pour manipuler la sortie du générateur de graphes, puis prend une photo.Le 1/3 du milieu configure le générateur de graphiques et n'a probablement pas besoin d'être aussi compliqué puisque l'image a été prise de l'intérieur du cadre et ignore les axes et les étiquettes.Le premier bit est un ensemble de paramètres avec lesquels vous pouvez jouer.La dernière ligne tente d'ouvrir le graphique.
// Ce script nécessite Windows JMP 13, qui peut enregistrer des fichiers gif animés.
// Malheureusement, la version Mac de JMP ne prend pas encore en charge cette fonctionnalité GIF.
nBars = 50 ; // combien de barres animées ?
xtaille=800 ; // dimensions de l'image
ytaille=100 ;
nFrames = 19 ; // combien d'images en boucle
frameMS = 1000/24 ; // durée de la trame en 1/1000 de seconde (1000/24 == 24 FPS)
périodes=3 ; // doit être un entier pour une boucle d'animation fluide
targetFile = "$desktop/DeleteMeAnimated.gif" ;
// créer un modèle de table de données pour l'animation
dt = New Table( "animate", addrows(nBars), New Column( "ID", formula(row()) ), New Column( "Value", formula(sin(2*pi()*row()/ nBars)) ) );
dt<
// crée un graphique d'espace réservé.REMARQUE : utilisez le générateur de graphiques interactif pour créer le graphique, et
// utilise Save Script pour créer ce JSL !Faites des modifications mineures plus tard.
gb = dt<
Taille (xsize, ysize), Afficher le panneau de configuration (0), Afficher la légende (0), Afficher le pied de page (0), Verrouiller les échelles (1),
Variables( X( :ID ), Y( :Valeur ), Couleur( :Valeur ) ), Eléments( Barre( X, Y, Légende( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Ticks mineurs( 1 ), Label Row(
{Taille de police automatique (0), Marques de graduation automatiques (0), Afficher les étiquettes principales (0), Afficher les graduations principales (0), Afficher les graduations mineures (0)}
)} ),
Dispatch( {}, "Valeur", ScaleBox,
{Min( -1.092929 ), Max( 1.10606060606061 ), Inc( 0.5 ), Minor Ticks( 1 ), Label Row(
{Taille de police automatique (0), Marques de graduation automatiques (0), Afficher les étiquettes principales (0), Afficher les graduations principales (0), Afficher les graduations mineures (0)}
)} ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 9, Properties( 0,
{dégradé( {Thème de couleur( "Vert à noir à rouge"), Valeurs d'échelle( [-1 1] ), Format d'étiquette( "Déc fixe", 15, 1 ),
Dégradé inversé ( 1 ), N étiquettes ( 5 )}
)} ) )} ),
Dispatch( {}, "titre du graphique", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "" )} )
)
);
// donne à la boîte de cadre la taille exacte requise ; plus tard
// le <
// bordure indésirable
(report(gb)[framebox(1)])<
attendre(0); // assurez-vous que le graphique est visible.Non requis, mais montre des progrès.
Pour( iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (périodes*nFrames);
// rend les barres toutes déphasées
Pour( iPhase = 1, iPhase <= nBars, iPhase++,
PhaseFraction = iPhase / nBars ;
dt:Value[iPhase] = Sin( périodes * (frameFraction * 2 * Pi() + phaseFraction * 2 * Pi()) );
);
// les barres ont de nouvelles hauteurs ; prendre une photo
gb << fenêtre de mise à jour ;
img = ( report(gb)[framebox( 1 )] )<
pleine grandeur = img<
// recadre la bordure de 3 pixels et la ligne de bordure.Un petit tâtonnement...
img<
//nouvelle taille=img<
//show(fullsize,newsize); // paramètres
si (iFrame == 1,
image finale = img ; // démarre le gif animé avec la première image
, // autre
Image finale<
finalImage<
);
finalImage<
);
gb<
close(dt,nosave);
finalImage<
show(filesize(targetFile));
open(targetFile); // démo dans un navigateur, peut-être.