<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo alle,
Ich habe ein Skript, bei dem eine der Ausgaben ein bivariates (XY) Diagramm ist, das die bivariate Plattform verwendet. Es zeichnet im Grunde den Wert eines Parameters eines Geräts auf der y-Achse gegen die Zeit auf der x-Achse auf. Diese Teile haben einen gemeinsamen ID-Wert in einer Spalte aus der Quelldatentabelle.
Jetzt verfügt die Plattform bereits über die Funktionalität, dass beim Klicken auf einen Marker die Zeile, auf der der Marker basiert, in der Datentabelle ausgewählt wird (andere Marker im Anzeigefeld werden ausgeblendet). Was ich möchte, ist, dass, wenn ein Benutzer auf eine Markierung klickt, alle anderen Markierungen mit demselben ID-Wert ebenfalls hervorgehoben werden (so dass der Benutzer sehen kann, wie sich dieses eine Gerät im Laufe der Zeit verhalten hat). Ich kämpfe nur darum, einen Weg zu finden, dies zu tun. Gibt es Zugriff auf den bereits für die Plattform vorhandenen Ereignisbehandlungscode (dh was ermöglicht die Auswahl der Zeilen, wenn der Benutzer auf eine Markierung klickt, oder mehrere Zeilen, wenn der Benutzer auf ein Rechteck im Plotfenster klickt und es zieht)?
Jede mögliche Hilfe auf diesem würde sehr geschätzt.
Vielen Dank.
FYI, ein anderer Ansatz mit dem Row State Handler:
Namen standardmäßig hierher ( 1 ) ;
// Tisch
dt = Neue Tabelle ( "Bivariate ID-Auswahl" ,
Zeilen hinzufügen ( 10 ) ,
Neue Spalte ( "ICH WÜRDE" , Numerisch , "Nominal" , Format ( "Am besten" , 12 ) , Werte einstellen ( [ 2014 , 2011 , 2012 , 2013 , 2014 , 2011 , 2013 , 2012 , 2011 , 2014 ] ) ) ,
Neue Spalte ( "X" , Numerisch , "kontinuierlich" , Format ( "Am besten" , 12 ) , Werte einstellen ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ) ) ,
Neue Spalte ( "Y" , Numerisch , "kontinuierlich" , Format ( "Am besten" , 12 ) , Werte einstellen ( [ 20 , 21 , 25 , 28 , 30 , 31 , 33 , 36 , 37 , 40 ] ) ) ,
Beschriftungsspalten festlegen ( : ICH WÜRDE )
) ;
// Zeilenstatus-Handler-Funktion
Wählen Sie MatchingID aus = Funktion ( { x } ,
// Abrufen, welche Zeilen derzeit ausgewählt sind
ausgewählte Zeilen = [] ;
ich = 1 ;
Für jede Reihe (
Wenn ( Ausgewählt ( Zeilenzustand () ) ,
ausgewählte Zeilen = V Konkat ( ausgewählte Zeilen , ich )
) ;
ich ++;
) ;
// Wenn es eine Auswahl gibt, 'erweitere' sie auf alle erforderlichen Zeilen
Wenn ( N-Reihe ( ausgewählte Zeilen ) > 0 ,
expandedSelectedRows = [] ;
Zum ( ich = 1 , ich <= N-Reihe ( ausgewählte Zeilen ) , ich ++,
diese ID = : ICH WÜRDE [ ausgewählte Zeilen [ ich ]] ;
übereinstimmende Zeilen = dt << getRowsWhere ( : ICH WÜRDE == diese ID ) ;
expandedSelectedRows = V Konkat ( expandedSelectedRows , übereinstimmende Zeilen ) ;
) ;
dt << Zeilen auswählen ( expandedSelectedRows ) ;
) ;
) ;
// Den Handler der Tabelle zuweisen
rsch = dt << MakeRowStateHandler ( Wählen Sie MatchingID aus ) ;
// Probieren Sie es mit Graph Builder aus
dt << Graph-Generator (
Größe ( 530 , 454 ) ,
Systemsteuerung anzeigen ( 0 ) ,
Variablen ( X ( : X ) , Y ( : Y ) ) ,
Elemente ( Punkte ( X , Y , Legende ( 5 ) ) , Glatter ( X , Y , Legende ( 6 ) ) )
) ;
Hallo alle,
Ich habe einen Weg gefunden, der funktioniert. Im Grunde müssen Sie nur ein Grafikskript erstellen und darin Code schreiben, der die IDs aus den ausgewählten Zeilen abruft, und dann eine select where-Anweisung verwenden, um alle Zeilen mit dieser ID abzugleichen. Dies funktioniert auch, wenn Sie eine Reihe von Punkten im Bivariat-Fenster anklicken und ziehen. Beispielcode unten.
xParam ="Column Name 1 Here";
yParam = "Column Name 2 Here";
idParam = "Column Name 3 Here";
//tableRef = data table reference
bivPlatform = Bivariate(
Y( Eval(yParam) ),
X( Eval(xParam) ),
);
bivReport = bivPlatform << Report;
bivFrame = bivRawReport[FrameBox( 1 )]; //Assign reference to framebox
// Add Graphics script to select all rows with matching ID when one row is selected on the graph
bivFrame << Add Graphics Script( 2, //Order graphics script is run with respect to other elements in Frame box (Not really needed here)
//Get selected IDs
selectedIDMatrix = tableRef:idParam[ ( tableRef << Get Selected Rows() ) ];
//Get unique IDs (optional I guess)
idArray = Associative Array(selectedIDMatrix);
uniqueIDMatrix = idArray << Get Keys;
//Select other datapoints with matching IDs
tableRef << Select Where( Contains( As List(uniqueIDMatrix), As Column(tableRef, idParam) ) );
);
hallo swiss,
Vielen Dank dafür und ich freue mich darauf, diese Funktion zu haben, wenn ich auf JMP 12 aktualisiere.
Ich habe nach dieser Funktionalität nur in der bivariaten Anzeigebox gesucht. Um Ihr obiges Beispiel zu verwenden, möchte ich auf einen Datenpunkt für 2014 klicken und alle 2014-Punkte hervorheben. Ich hoffe, es gibt eine reine Skriptlösung.
Auf jeden Fall nochmal danke für deine Antwort.
nkeleh,
Vielen Dank für die Frage, ob Sie etwas in einem bivariaten Diagramm „X nach Y anpassen“ auswählen können, aber dann alle entsprechenden Punkte zurück zur hervorgehobenen Datentabelle sehen können, die ähnliche IDs wie der ausgewählte Punkt haben.Auch wenn es immer noch eine elegantere „Skripterstellung von Grund auf“-Antwort auf das geben könnte, was Sie tun möchten, habe ich mit der neuen JMP 12 Application Builder-Funktion einen einfachen Weg gefunden, mit dem ein Diagramm als Datenfilter verwendet werden kann.Dann können Sie hoffentlich Teile dieses vorgefertigten Skripts in Ihrer aktuellen Arbeit verwenden oder vielleicht einfach diese sofort einsatzbereite Funktion so nutzen, wie sie ist.Beachten Sie, dass ich die Version JMP 12.1 für Mac verwende.
In diesem Fall haben wir eine einfache Datentabelle wie von Ihnen beschrieben mit drei Spalten erstellt: ID, X und Y, wobei mehrere IDs mehrere Zeilen mit unterschiedlichen X- und Y-Messungen haben. Wir haben dann die Datentabelle und dann eine Verteilung der Spalten in einem Fenster (Kombinieren Sie Windows in JMP, um eine benutzerdefinierte Berichtsansicht zu erhalten) unten kombiniert, damit Sie unsere anfängliche Einrichtung sehen können.

Dann haben wir ein Diagramm erstellt, das die bivariate Anpassung von Y nach X zeigt.Wenn Sie an dieser Stelle einen Punkt auswählen, wählen Sie wirklich nur basierend auf den X- und Y-Koordinaten aus.Es ist kein Problem, das ID-Label für diesen Punkt anzuzeigen, aber dies wird nur diesen genauen Punkt zurück in Ihre Datentabelle schattieren (auswählen).Das Problem ist also, dass die Bivariate nur auf der Grundlage ähnlicher X- und Y-Koordinaten und nicht auf gemeinsamen IDs nach Übereinstimmungen suchen würde.Sehen Sie sich die nächste benutzerdefinierte Berichtsansicht an.
Also dachten wir, wir könnten dies vielleicht zu einem wirklich einfachen zweistufigen Prozess machen, indem wir ein "Hilfsdiagramm" neben dem bivariaten erstellen, das es mir ermöglichen würde, alle ID-Punkte von Interesse mit einem Klick auszuwählen.Dazu habe ich eine Verteilung für ID erstellt (die ich für eine bessere Auswahlmöglichkeit in einen nominalen Datenspaltentyp umgewandelt habe) und dann alle Anzeigeoptionen außer einem Mosaikdiagramm deaktiviert.Verbinden Sie dann sowohl die Verteilungs- als auch die bivariaten Diagramme in einem Fenster, um eine weitere benutzerdefinierte Berichtsansicht zu erhalten.Dann haben wir unter dem roten Dreieck in der Kopfzeile des Berichts die Schaltfläche „Anwendung bearbeiten“ ausgewählt, die den Arbeitsbereich „Anwendungsgenerator“ aufruft (nach Auswahl der zugrunde liegenden Datentabelle).Im Application Builder ist es jetzt so einfach, das erste Verteilungsmosaikdiagramm auszuwählen, mit der rechten Maustaste darauf zu klicken und „Als Filter verwenden“ auszuwählen.Jetzt kann ich eine Zwei-Klick-Lösung haben ... wo ich zuerst den Punkt auf dem bivariaten Fit Y By X-Diagramm auswähle, der mir wichtig ist, und dann kann ich darüber gleiten und die vollständige ID im teilweise schattierten Mosaik auswählen (Klickrichtung auf). Dadurch werden nun alle ähnlichen IDs in der Datentabelle hervorgehoben.Es ist auch schön, auf dem bivariaten Fit Y By X-Diagramm alle Punkte grafisch zu sehen, die derselben ID-Nummer entsprechen, nachdem wir sie im Mosaic Plot ausgewählt haben.


Jetzt können Sie zum roten Dreieck unter der Kopfzeile des Berichts gehen und das Skript in einem Skriptfenster speichern, um die zugrunde liegende Skriptarbeit anzuzeigen, die beim Erstellen dieser Ansicht für Sie generiert wurde.Auch dies ist zwar nicht so raffiniert wie die Möglichkeit, dies direkt aus dem bivariaten Fit Y By X zu tun, es zeigt jedoch eine sofort einsatzbereite Lösung und gibt Ihnen die Möglichkeit, einen Teil des Skripts automatisch zu generieren.Wird diese JMP-Arbeitsdatei mit gespeicherten Skripts anhängen, damit Sie sie ebenfalls auschecken können.
Hoffe das hilft!