<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 JMP 13 unter Windows um einige animierte GIF-Funktionen erweitert,
Speichern Sie eine Bubble-Plot-Animation als animiertes GIF
Speichern Sie eine Datenfilter-Animation 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 beigefügte JSL zeigt eine Möglichkeit, die Bitmaps aus dem Rahmen eines Diagramms (keine Achsen, kein Titel) zu erfassen und im animierten GIF zu speichern.
Jeder Frame in der Animation kann eine eigene Dauer haben; Generell sollten alle Frames die gleiche Dauer haben.Die Anzahl der Schleifen kann angegeben werden.Wie Sie sehen, kann es nervig sein, sich ständig zu wiederholen.Loops können nur in eine Richtung abgespielt werden.Wenn Sie ein GIF sehen, das sich umzukehren oder zu springen scheint, liegt das daran, dass die eine Richtungsschleife Frames enthält, die vorwärts und rückwärts verlaufen.Die obige Schleife gilt für eine einzelne Sinuswelle (nicht für die drei Perioden, die es zu sein scheint).Trotzdem handelt es sich um eine mäßig große Datei: 19 Bilder in 130 KB.
Das Folgende sollte mit dem Anhang übereinstimmen.Sie können sehen, wie die Schleife im letzten Drittel des Skripts die Daten in der Datentabelle ändert, um die Ausgabe des Graph Builders zu manipulieren, und dann ein Bild aufnimmt.Das mittlere Drittel richtet den Graph Builder ein und musste wahrscheinlich nicht so kompliziert sein, da das Bild aus dem Rahmen heraus aufgenommen wurde und die Achsen und Beschriftungen ignoriert werden.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.
nBars = 50; // wie viele animierte Balken?
xsize=800; // Bildabmessungen
ysize=100;
nFrames = 19; // wie viele Frames in der Schleife
FrameMS = 1000/24; // Dauer des Bildes 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()/ nBars)) ) );
dt<
// ein Platzhalterdiagramm erstellen.HINWEIS: Verwenden Sie den interaktiven Graph Builder, um das Diagramm zu erstellen
// Save Script verwenden, um diese JSL zu erstellen!Nehmen Sie später kleinere Änderungen vor.
gb = dt<
Größe (xsize, ysize), Systemsteuerung anzeigen (0), Legende anzeigen (0), Fußzeile anzeigen (0), Skalierung sperren (1),
Variablen( X( :ID ), Y( :Wert ), Farbe( :Wert ) ), Elemente( Balken( X, Y, Legende( 9 ) ) ),
SendToReport( Dispatch( {}, "ID", ScaleBox,
{Min( 0 ), Max( nBars+1 ), Inc( 2 ), Minor Ticks( 1 ), Label Row(
{Automatische Schriftgröße (0), Automatische Markierungen (0), Große Beschriftungen anzeigen (0), Große Markierungen anzeigen (0), Kleine Markierungen anzeigen (0)}
)} ),
Dispatch( {}, "Value", ScaleBox,
{Min( -1,092929 ), Max( 1,10606060606061 ), Inc( 0,5 ), Minor Ticks( 1 ), Label Row(
{Automatische Schriftgröße (0), Automatische Markierungen (0), Große Beschriftungen anzeigen (0), Große Markierungen anzeigen (0), Kleine Markierungen anzeigen (0)}
)} ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 9, Properties( 0,
{gradient( {Color Theme( „Green to Black to Red“), Scale Values( [-1 1] ), Label Format( „Fixed Dec“, 15, 1 ),
Umgekehrter Farbverlauf (1), N Etiketten (5)}
)} ) )} ),
Dispatch( {}, "Grafiktitel", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "" )} )
)
);
// Stellen Sie sicher, dass die Rahmenbox genau die benötigte Größe hat. später
// Der <
// unerwünschte Grenzlinie
(report(gb)[framebox(1)])<
warte(0); // Stellen Sie sicher, dass das Diagramm sichtbar ist.Nicht erforderlich, zeigt aber den Fortschritt an.
For( iFrame = 1, iFrame <= nFrames, iFrame++,
frameFraction = iFrame / (perioden*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 << updatewindow;
img = ( report(gb)[framebox( 1 )] )<
fullsize = img<
// Den 3-Pixel-Rand und die Randlinie zuschneiden.Ein bisschen Versuch und Irrtum...
img<
//newsize=img<
//show(fullsize,newsize); // Parameter
if ( iFrame == 1,
finalImage = img; // starte das animierte GIF mit dem ersten Bild
, // anders
finalImage<
finalImage<
);
finalImage<
);
gb<
close(dt,nosave);
finalImage<
show(filesize(targetFile));
open(targetFile); // Demo in einem Browser, vielleicht.