<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />En savoir plus sur JMP 13 : Aperçu de JMP 13 | JMP et Annonce de JMP 13, en direct du Discovery Summit | JMP
john.ponte ajout d'une fonctionnalité GIF animée à JMP 13 sous Windows,
Enregistrer une animation Bubble Plot sous forme de GIF animé
Enregistrer une animation de filtre de données sous forme de 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 création.Le JSL ci-joint montre une façon de capturer les bitmaps 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 images doivent avoir la même durée.Le nombre de boucles peut être spécifié.Comme vous pouvez le constater, faire une boucle indéfiniment devient ennuyeux.Les boucles ne peuvent être jouées que dans une seule direction.Si vous voyez un GIF qui semble s'inverser ou rebondir, c'est parce que la boucle unidirectionnelle comporte des images qui avancent et reculent.La boucle ci-dessus concerne une seule onde de péché (et non les trois périodes auxquelles elle semble être).Malgré cela, il s'agit d'un fichier moyennement volumineux : 19 images sur 130 Ko.
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 graphiques, puis prendre une photo.Le tiers du milieu consiste à configurer le générateur de graphiques et n'avait probablement pas besoin d'être aussi compliqué puisque l'image a été prise depuis 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.
nBarres = 50 ; // combien de barres d'animation ?
taille x=800 ; // dimensions de l'image
ysize=100 ;
nFrames = 19 ; // combien d'images dans la boucle
cadreMS = 1000/24 ; // durée de l'image 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ée un modèle de table de données pour l'animation
dt = Nouvelle table ( "animer", addrows (nBars), Nouvelle colonne ( "ID", formule (ligne ()) ), Nouvelle colonne ( "Valeur", formule (sin (2 * pi () * ligne () / nBarres)) ) );
dt<
// crée un graphique d'espace réservé.REMARQUE : utilisez le générateur de graphiques interactif pour créer le graphique, et
// utilisez Save Script pour créer ce JSL !Effectuez 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( :Value ), Couleur( :Value ) ), Éléments( Bar( X, Y, Legend( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Ticks mineurs( 1 ), Ligne d'étiquette(
{Taille de police automatique (0), graduations automatiques (0), afficher les étiquettes principales (0), afficher les graduations majeures (0), afficher les graduations mineures (0)}
)} ),
Dispatch( {}, "Valeur", ScaleBox,
{Min ( -1,092929 ), Max ( 1,10606060606061 ), Inc ( 0,5 ), Ticks mineurs ( 1 ), Ligne d'étiquette (
{Taille de police automatique (0), graduations automatiques (0), afficher les étiquettes principales (0), afficher les graduations majeures (0), afficher les graduations mineures (0)}
)} ),
Dispatch( {}, "400", ScaleBox, {Modèle de légende (9, Propriétés (0,
{gradient( {Thème de couleur( "Vert au 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( {}, "Titre X", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y titre", TextEditBox, {Set Text( "" )} )
)
);
// donne à la boîte de cadre la taille exacte nécessaire ; plus tard
// le <
// ligne de bordure indésirable
(report(gb)[framebox(1)])<
attendre(0); // assurez-vous que le graphique est visible.Pas obligatoire, 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 << updatewindow;
img = ( report(gb)[framebox( 1 )] )<
pleine taille = img<
// recadre la bordure de 3 pixels et la ligne de bordure.Un peu d'essais et d'erreurs...
img<
//newsize=img<
//show(pleine taille,newsize); // paramètres
si ( iFrame == 1,
image finale = img ; // démarre le gif animé avec la première image
, // autre
finalImage<
finalImage<
);
finalImage<
);
gb<
fermer(dt,nosave);
finalImage<
show (taille du fichier (fichier cible));
ouvrir (fichier cible); // démo dans un navigateur, peut-être.