Können JMP-Grafiken diesen Effekt haben?Dies ist der HTML-Effekt.
Kann JMP Graphlet diesen Effekt erzielen?
Danke!

Automatisierung und SkriptingWindowsBetreff: Können JMP-Grafiken diesen Effekt haben?
@hogi wrote:
Wie greife ich auf diesen Namespace zu?
Beide:
Report(gb)[FrameBox(1)] << get namespace() ;
(Report(gb)[FrameBox(1)] << find seg(TopSeg (1))) << get namespace();
Erstellen Sie einen neuen Namespace.
... Ich habe den JMP-Support gefragt: TS- 00173810
Leider:
Dukann nicht Zugang Die Grafik Skript Namespace äußerlich.
Betreff: Können JMP-Grafiken diesen Effekt haben?Autsch, sicher – wie zeichnet man einen Kreis?
Betreff: Können JMP-Grafiken diesen Effekt haben?Der Griff ist da. Der Kreis nicht. Ich *denke*, der Radius des perfekt runden Kreises auf dem nicht quadratischen Raster ist in den Koordinaten der Y-Achse definiert.
Betreff: Können JMP-Grafiken diesen Effekt haben?Interessant. Warum ist der Griff nicht an das x/y-Koordinatensystem gebunden?
Es funktioniert immer noch, nachdem die Größe des Diagramms geändert wurde, aber es gibt einen erheblichen Versatz:
Betreff: Können JMP-Grafiken diesen Effekt haben?-
Betreff: Können JMP-Grafiken diesen Effekt haben?Sie können Funktionsargumente anstelle von x,y verwenden
Names Default To Here( 1 );
New Window( "Example",
trapx = 20;
trapy = 50;
handx = 70;
handy = 80;
trapcolor="blue";
handcolor="blue";
Graph Box(
Frame Size( 200, 200 ),
handle( handx, handy, // any handle(s) must come before Mousetrap
Function( {a, b}, handx=a; handy=b;
Write( Eval Insert( "\!nhand drag ^a^ ^b^" ) );
handcolor="magenta"; )
, // the mouse-up handler
Function( {a, b}, handx=a; handy=b;
Write( Eval Insert( "\!nhand release ^a^ ^b^" ) );
handcolor="cyan"; )
);
Mousetrap( // should not be more than one Mousetrap, the first one captures all clicks
Function( {a, b}, trapx=a; trapy=b;
Write( Eval Insert( "\!ntrap drag ^a^ ^b^" ) );
trapcolor="red"; )
, // the mouse-up handler
Function( {a, b}, trapx=a; trapy=b;
Write( Eval Insert( "\!ntrap release ^a^ ^b^" ) );
trapcolor="green"; )
);
// the drawing occurs outside of the mousetrap or handle
pencolor(trapcolor);
pensize(3);
Circle( {0, 0}, Sqrt( trapx * trapx + trapy * trapy ) );
pencolor(handcolor);
pensize(3);
Circle( {0, 0}, Sqrt( handx * handx + handy * handy ) );
)
);
Wenn Sie einen oder mehrere Handles benötigen, müssen diese vor der Mausefalle erscheinen, da ein Klick von der Mausefalle verbraucht wird, wenn kein vorheriger Handle ihn belegt hat.
Betreff: Können JMP-Grafiken diesen Effekt haben?
Okay, EIN gemeinsamer Namensraum pro Framebox – getrennt vom globalen Namensraum.
- und getrennt vom Namensraum der anderen FrameBoxes.
Nachtrag: Wow, das ist eine völlig falsche Interpretation des Befundes.
::x= 5;
(Report( gb )<< xpath("//FrameBox")) << add graphics script(//
If(Not( Is Empty( x ) ), // if the mouse did not yet enter the graph -> do nothing.
Caption("global x is "|| Char(::X));
V Line(x+3);
)
//
);
Eine weitere Erkenntnis – am Ende des Videos:
Durch eine Skalierung des Fensters wird die Grafik auf die ursprünglichen Werte aus dem Here- Namensraum zurückgesetzt.
Wie greife ich auf diesen Namensraum zu?
Beide:
Report(gb)[FrameBox(1)] << get namespace() ;
(Report(gb)[FrameBox(1)] << find seg(TopSeg (1))) << get namespace();
Einen neuen Namensraum erzeugen.
Betreff: Können JMP-Grafiken diesen Effekt haben?Ich habe gerade diese Informationen im Scripting Index gefunden:

Die Koordinaten x und y werden als globale Variablen für die Ausführung des Skripts gespeichert.
Und alle bereits vorhandenen globalen Variablen x und y werden nach der Ausführung des Skripts wiederhergestellt.
Hier könnte die Geschichte enden.
Das Aufheben der Kommentierung des
// x=y=60;
lässt den Graphen mit einer Linie bei x = 60 beginnen . -> das Skript verwendet die lokale Variable aus dem Here -Namespace.
Was mich überrascht hat:
Wenn ich versuche, die Linie an eine andere Stelle zu ziehen, funktioniert es!
Warum ist das überraschend:
x im Here -Namespace bleibt bei 60. Und das Skript wird die Variablen aus dem Here -Namespace den Variablen aus dem globalen Namespace vorziehen. [Bearbeiten: Für die globalen Variablen sollten die ursprünglichen Werte zu diesem Zeitpunkt „wiederhergestellt“ werden: nach der Ausführung von MouseTrap]. Warum funktioniert das Skript also?!
Es scheint, dass im Skript lokale Variablen x und y bevorzugt verwendet werden – anstelle der Variablen aus dem Here -Namespace. Ist diese Interpretation richtig?
Unter der Zeile ist es dann sehr nett, dass JMP sich die Mühe mit den globalen Variablen macht. Auf diese Weise können auch Funktionen, die außerhalb des Kontexts des Grafikskripts (myfunctions:xy ) leben, auf die Variablen zugreifen 
vielleicht interessant zu überprüfen:
Grafikskripte einer FrameBox – teilen sie einen gemeinsamen Namespace oder verwendet jedes Grafikskript seinen eigenen ...
Betreff: Können JMP-Grafiken diesen Effekt haben?ICH VERSTEHE
Danke Craig!
Betreff: Können JMP-Grafiken diesen Effekt haben?@hogi MouseTrap ist eine seltsame Sache in JSL. Es ist eine Funktion, die bei Ausführung nichts tut und bei der es keine Rolle spielt, ob sie ausgeführt wird oder nicht und (meistens) wo sie im Skript positioniert ist. Wenn auf dem Diagramm eine Mausbewegung stattfindet, werden die Koordinaten in x,y an das Skript gesendet, die wie gezeigt in globale Variablen kopiert werden müssen.
Handle und die verschiedenen Drag-Varianten haben eine zugeordnete Position und werden nur aktiviert, wenn sie nahe genug sind. Die Reihenfolge spielt eine gewisse Rolle, denn der erste im Skript gefundene Wert, der nahe genug ist (ein paar Pixel), wird aktualisiert.
Ich kann nicht ganz erklären, warum es mit Ihrer Änderung funktioniert. X sollte wirklich nicht existieren ... es scheint, als würde es der Mausefalle entkommen!
Ich habe das Skript in meinem ersten Beitrag repariert.
Betreff: Können JMP-Grafiken diesen Effekt haben?Sieht aus wie das Hinzufügen eines Hover-Drill-Skripts.
For(iFrame=1,iFrame<=N Items(framelist),iFrame+=1,frame=framelist[iFrame]; Eval(Eval Expr(frame<<ADDGRAPHICSSCRIPT></ADDGRAPHICSSCRIPT>
Thanks Experts!
Betreff: Können JMP-Grafiken diesen Effekt haben?@Craige_Hales , schön, sehr glatt! 

Fast zu glatt: Ich hoffe, dieses Beispiel hält die Entwickler nicht davon ab, einen Nicht-JSL-Ansatz zu implementieren.
einige Argumente für eine native Unterstützung durch Graph Builder:
- Machen Sie den nativen Graph Builder leistungsfähiger
- auch die Nicht-JSL-Benutzer glücklich machen
- die automatischen, ausgefallenen Anmerkungen auch ohne Mausklicks anzeigen
-> ermöglichen den Benutzern, wie gewohnt die Maus zu verwenden, um Datenpunkte auszuwählen
(beim aktuellen „JSL“-Ansatz könnte man einige Umschalttasten hinzufügen, um den richtigen Modus auszuwählen – wie es für das Venn-Diagramm implementiert ist)
Es hat eine Weile gedauert, bis ich die Fehlermeldung verstanden habe!
Names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
// x=y=60;
fb = Report( gb )[FrameBox( 1 )];
fb << addgraphicsscript(//
If(Not( Is Empty( x ) ), // if the mouse did not yet enter the graph -> do nothing.
Mousetrap("nothing to do");
V Line(x);
// at this point you can highlight all the values near xx
For( irow = 1, irow <= N Rows( dt ), irow += 1,
If( Abs( dt:height[irow] - x ) < 0.5, // big class height step is 1, <.5 selects a single column of weights
Marker( Marker State( 4 ), {dt:height[irow], dt:weight[irow]} )
)
);
xwidth = X Range();
xmidpoint = X Origin() + xwidth / 2;
If( x < xmidpoint,
Text( {x + xwidth / 100, y}, "height " || Char( Round( x ) ) || "\!nmore" )//
,
Text(
right justified,
{x - xwidth / 100, y},
"height " || Char( Round( x ) ) || "\!nmore"
)
);
)
//
);
Betreff: Können JMP-Grafiken diesen Effekt haben?
Betreff: Können JMP-Grafiken diesen Effekt haben?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
fb = Report( gb )[FrameBox( 1 )];
xx = yy = 0;
fb << addgraphicsscript(//
Mousetrap(
xx = x;
yy = y;
);
V Line( xx );
// at this point you can highlight all the values near xx
For( irow = 1, irow <= N Rows( dt ), irow += 1,
If( Abs( dt:height[irow] - xx ) < 0.5, // big class height step is 1, <.5 selects a single column of weights
Marker( Marker State( 4 ), {dt:height[irow], dt:weight[irow]} )
)
);
xwidth = X Range();
xmidpoint = X Origin() + xwidth / 2;
If( xx < xmidpoint,
Text( {xx + xwidth / 100, yy}, "height " || Char( Round( xx ) ) || "\!nmore" )//
,
Text( right justified, {xx - xwidth / 100, yy}, "height " || Char( Round( xx ) ) || "\!nmore" )
);
//
);
edit: Zeile 18 sagt jetzt xx statt x. Muss etwas in meinem Namespace übriggeblieben sein. Danke @lala @hogi
Betreff: Können JMP-Grafiken diesen Effekt haben?über ( JSL-freien ) Graph Builder: noch nicht. Vielleicht in einer zukünftigen Version?
Immer mehr Konkurrenzprogramme stellen derartige Anmerkungen zur Verfügung, daher gehe ich davon aus, dass sie auch in JMP implementiert werden.
Sie können zum neuen Fadenkreuztyp für Linien- und glattere Diagrammtypen wechseln und den Wunsch von @shampton82 unterstützen.
Betreff: Können JMP-Grafiken diesen Effekt haben?über JSL, ja.
Betreff: Können JMP-Grafiken diesen Effekt haben?Das Skript wurde leicht geändert, um Gewichtswerte statt mehr anzuzeigen:
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
fb = Report( gb )[FrameBox( 1 )];
xx = yy = 0;
valuesMatrix = :height << Get Values; //***new*** Get column values for height
fb << addgraphicsscript(//
Mousetrap(
xx = x;
yy = y;
);
V Line( xx );
// at this point you can highlight all the values near xx
For( irow = 1, irow <= N Rows( dt ), irow += 1,
If( Abs( dt:height[irow] - xx ) < 0.5, // big class height step is 1, <.5 selects a single column of weights
Marker( Marker State( 4 ), {dt:height[irow], dt:weight[irow]} )
)
);
valuesRows = char(:weight[loc(valuesMatrix,round(xx))]); //***new*** write to char weight values for all rows of height at position round(xx)
xwidth = X Range();
xmidpoint = X Origin() + xwidth / 2;
If( xx < xmidpoint,
Text( {xx + xwidth / 100, yy}, "height " || Char( Round( xx ) ) || "\!nweight " || valuesRows )////***new*** exchanged "more" with weigth and list of weight values for that location of height
,
Text( right justified, {xx - xwidth / 100, yy}, "height " || Char( Round( xx ) ) || "\!nweight " || valuesRows )
);
//
);
Sie können möglicherweise sogar eine aufsteigende/absteigende Sortierung der Werte hinzufügen.
Betreff: Können JMP-Grafiken diesen Effekt haben?Hm, ich glaube, viele meiner Schlussfolgerungen waren falsch.
Ein weiterer Versuch:

- Vielleicht die
bedeutet nicht "nachdem das [Ziehen]-Skript ausgeführt wurde", sondern "wenn die Maustaste losgelassen wird".
- Und das ist sehr wichtig. Wenn keine Notwendigkeit besteht, eine Framebox zu aktualisieren, wird sie nicht aktualisiert.
Also,
- Wenn die Maus bewegt wird, werden neue Koordinaten in den x- und y-Werten gespeichert.
(
Nein – im Here-Namensraum, da wir die Standardeinstellung „HERE“ (1) verwendet haben.
- ... und die Werte können innerhalb des Here-Namensraums verwendet werden – sogar außerhalb von Mausefalle() . Das verwirrte @Craige_Hales , und ich tappte erneut in diese Falle: Ich erstellte ein Drag-and-Drop-Skript.
- Nach der Aktualisierung der Variablen erhält JMP einen Auslöser, um die Framebox mit dem Grafikskript und den aktuellen x- und y-Werten neu zu zeichnen.
- Andere Frameboxen werden nicht aktualisiert:
Wenn wir die Maus im linken Rahmenfeld bewegen, wird das mittlere Rahmenfeld nicht aktualisiert – und umgekehrt.
Dadurch entsteht die Illusion zweier getrennter Namensräume. Daher ist es nicht verwunderlich, dass Benutzer nicht auf den Namensraum einer Framebox zugreifen können – es gibt keinen. Es handelt sich lediglich um den gemeinsam genutzten Here- Namensraum in Kombination mit lokalen Framebox-Aktualisierungen.
- Nach dem Loslassen der Maustaste, x und y
Die
Es wird jedoch keine Aktualisierung der Frame-Boxen ausgelöst. Daher bemerkt der Benutzer diese Zurücksetzung der Variablen im Namespace „ Hier “ nicht.
- Genau dann, wenn das Diagramm das nächste Mal aktualisiert wird (z. B. in der Größe verändert oder einige Datenpunkte ausgewählt werden), wird das Grafikskript erneut ausgeführt und zeigt an, dass die Werte (vor einiger Zeit) zurückgesetzt wurden.
Betreff: Können JMP-Grafiken diesen Effekt haben?gpt-5.6-luna.
Erinnere mich an diesen Beitrag

Nicht schlecht!
Betreff: Können JMP-Grafiken diesen Effekt haben?Das ist echt cool, @Craige_Hales , @martindemel und @hogi .
Das ist eine wirklich praktische Funktion, und ich würde eine solche native Implementierung im Graph Builder voll und ganz befürworten. Mir gefällt besonders, wie die Datenpunkte in der Nähe des angeklickten Bereichs hervorgehoben werden.
Gibt es eine Möglichkeit, die vertikale Linie zu deaktivieren? Sobald man auf das Diagramm klickt, bleibt sie sichtbar. Es wäre praktisch, das Diagramm nach Gebrauch zurücksetzen zu können. Diese Funktion ließe sich möglicherweise einfacher nativ in der Plattform implementieren als über JSL.
Danke!,
DS
Betreff: Können JMP-Grafiken diesen Effekt haben?@SDF1 Danke! Du kannst ein zweites Skriptargument für mousetrap verwenden, um das Loslassen der Maustaste zu erkennen und das Grafikskript zu entfernen. Das erste Skript wird beim Drücken der Maustaste und jeder weiteren Mausbewegung aufgerufen. Wenn ein zweites Skript angegeben wird, wird es mit denselben Parametern aufgerufen, um das Loslassen der Maustaste zu signalisieren.
Betreff: Können JMP-Grafiken diesen Effekt haben?Ich hätte nie gedacht, dass gemini3.1 pro dieses Meisterwerk vollenden könnte. 
Betreff: Können JMP-Grafiken diesen Effekt haben?Claude Fable 5 