<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Mehr zu JMP 13: Vorschau JMP 13 | JMP Und Ankündigung von JMP 13, live vom Discovery Summit | JMP
john.ponte einige animierte GIF-Funktionen zu JMP 13 unter Windows hinzugefügt,
Speichern Sie eine Bubble-Plot-Animation als animiertes GIF
Speichern Sie eine Datenfilteranimation als animiertes GIF
Hier ist ein weiteres Beispiel.

Fast jeder Browser, der weniger als 100 Jahre alt ist, unterstützt animierte GIFs.JMP 13 bietet Unterstützung für deren Erstellung.Die angehängte JSL zeigt eine Möglichkeit, die Bitmaps aus dem Rahmen eines Diagramms (keine Achsen, kein Titel) zu erfassen und sie im animierten GIF zu speichern.
Jeder Frame in der Animation kann seine eigene Dauer haben; generell sollten alle Frames die gleiche Dauer haben.Die Anzahl der Schleifen kann angegeben werden.Wie Sie sehen können, wird das Endlosschleifen lästig.Loops können nur in eine Richtung abgespielt werden.Wenn Sie ein GIF sehen, das sich umzukehren oder abzuprallen scheint, liegt das daran, dass die eine Richtungsschleife Frames enthält, die vorwärts und rückwärts gehen.Die obige Schleife ist für eine einzelne Sinuswelle (nicht die drei Perioden, die es zu sein scheint).Trotzdem ist es eine mäßig große Datei: 19 Frames in 130 KB.
Das Folgende sollte mit dem Anhang identisch sein.Sie können sehen, wie die Schleife im letzten Drittel des Skripts die Daten in der Datentabelle ändert, um die Ausgabe des Graph Builder zu manipulieren, und dann ein Foto macht.Das mittlere 1/3 richtet den Graph Builder ein und musste wahrscheinlich nicht so kompliziert sein, da das Bild aus dem Inneren des Rahmens aufgenommen wurde und die Achsen und Beschriftungen ignoriert.Das erste Bit ist eine Reihe von Parametern, mit denen Sie spielen können.Die letzte Zeile versucht, das Diagramm zu öffnen.
// Dieses Skript erfordert Windows JMP 13, das animierte GIF-Dateien speichern kann.
// Leider unterstützt die Mac-Version von JMP diese GIF-Funktion noch nicht.
nBalken = 50; // Wie viele Animationsbalken?
xgröße=800; // Bildabmessungen
ysize=100;
nFrames = 19; // wie viele Frames in Schleife
FrameMS = 1000/24; // Framedauer in 1/1000 Sekunde (1000/24 == 24 FPS)
Perioden=3; // muss eine Ganzzahl für eine reibungslose Animationsschleife sein
targetFile = "$desktop/DeleteMeAnimated.gif";
// eine Datentabellenvorlage für die Animation erstellen
dt = New Table( "animate", addrows(nBars), New Column( "ID", formula(row()) ), New Column( "Value", formula(sin(2*pi()*row()/ nBalken)) ) );
dt<
// Platzhalterdiagramm erstellen.HINWEIS: Verwenden Sie den interaktiven Graph Builder, um das Diagramm zu erstellen, und
// Verwenden Sie Save Script, um diese JSL zu erstellen!Nehmen Sie später kleinere Änderungen vor.
gb = dt<
Größe ( xsize, ysize ), Steuerfeld anzeigen ( 0 ), Legende anzeigen ( 0 ), Fußzeile anzeigen ( 0 ), Skalen sperren ( 1 ),
Variablen( X( :ID ), Y( :Wert ), Farbe( :Wert ) ), Elemente( Bar( X, Y, Legend( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Ticks( 1 ), Label Row(
{Automatische Schriftgröße( 0 ), Automatische Teilstriche( 0 ), Große Beschriftungen anzeigen( 0 ), Große Teilstriche anzeigen( 0 ), Kleine Teilstriche anzeigen( 0 )}
)} ),
Dispatch( {}, "Wert", ScaleBox,
{Min( -1.092929 ), Max( 1.10606060606061 ), Inc( 0.5 ), Minor Ticks( 1 ), Label Row(
{Automatische Schriftgröße( 0 ), Automatische Teilstriche( 0 ), Große Beschriftungen anzeigen( 0 ), Große Teilstriche anzeigen( 0 ), Kleine Teilstriche anzeigen( 0 )}
)} ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 9, Properties( 0,
{Farbverlauf ({Farbthema ("Grün zu Schwarz zu Rot")), Skalenwerte ([-1 1]), Beschriftungsformat ("Fester Dez", 15, 1),
Gradient umkehren ( 1 ), N Labels ( 5 )}
)} ) )} ),
Dispatch( {}, "Grafiktitel", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "" )} )
)
);
// die Rahmenbox auf die exakt benötigte Größe bringen; später
// das <
// unerwünschte Grenzlinie
(report(gb)[framebox(1)])<
warten (0); // Stellen Sie sicher, dass der Graph sichtbar ist.Nicht erforderlich, zeigt aber Fortschritt an.
Für (iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (Punkte*nFrames);
// macht die Balken alle phasenverschoben
For( iPhase = 1, iPhase <= nBars, iPhase++,
phaseFraction = iPhase / nBars;
dt:Value[iPhase] = Sin( Perioden * (frameFraction * 2 * Pi() + phaseFraction * 2 * Pi()) );
);
// Die Balken haben neue Höhen; machen Sie ein Foto
gb << Aktualisierungsfenster;
img = (report(gb)[framebox(1)])<
fullsize = img<
// den 3-Pixel-Rand und die Randlinie zuschneiden.Ein bisschen Trial-and-Error...
img<
//newsize=img<
//show(fullsize,newsize); // Parameter
wenn ( iFrame == 1,
finalImage = img; // Starte das animierte GIF mit dem ersten Bild
, // anders
finalImage<
finalImage<
);
finalImage<
);
gb<
schließen (dt, nosave);
finalImage<
show(Dateigröße(Zieldatei));
öffnen (Zieldatei); // vielleicht Demo in einem Browser.