<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo zusammen,
Ich habe ein Skript, in dem eine der Ausgaben ein bivariates (XY) Diagramm unter Verwendung der bivariaten Plattform ist. Im Wesentlichen wird der Wert eines Parameters eines Geräts auf der y-Achse im Vergleich zur Zeit auf der x-Achse aufgetragen. 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 eine Markierung die Zeile, auf der die Markierung basiert, in der Datentabelle ausgewählt wird (andere Markierungen im Anzeigefeld werden ausgeblendet). Ich möchte, dass, wenn ein Benutzer auf eine Markierung klickt, auch alle anderen Markierungen mit demselben ID-Wert hervorgehoben werden (damit der Benutzer sehen kann, wie sich dieses eine Gerät im Laufe der Zeit verhält). Ich habe nur Mühe, einen Weg zu finden, dies zu tun. Gibt es Zugriff auf den Ereignisverarbeitungscode, der bereits für die Plattform vorhanden ist (d. h. was ermöglicht die Auswahl der Zeilen, wenn der Benutzer auf eine Markierung klickt, oder mehrerer Zeilen, wenn der Benutzer auf ein Rechteck im Plotfenster klickt und es zieht)?
Jede Hilfe hierzu wäre sehr dankbar.
Danke.
Zu Ihrer Information, ein anderer Ansatz mit dem Zeilenstatushandler:
Namen standardmäßig hier ( 1 ) ;
// Tisch
dt = Neuer Tisch ( „Bivariate ID-Auswahl“ ,
Zeilen hinzufügen ( 10 ) ,
Neue Spalte ( "AUSWEIS" , Numerisch , „Nominal“ , Format ( "Am besten" , 12 ) , Werte festlegen ( [ 2014 , 2011 , 2012 , 2013 , 2014 , 2011 , 2013 , 2012 , 2011 , 2014 ] ) ) ,
Neue Spalte ( "X" , Numerisch , „Kontinuierlich“ , Format ( "Am besten" , 12 ) , Werte festlegen ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ) ) ,
Neue Spalte ( „Y“ , Numerisch , „Kontinuierlich“ , Format ( "Am besten" , 12 ) , Werte festlegen ( [ 20 , 21 , 25 , 28 , 30 , 31 , 33 , 36 , 37 , 40 ] ) ) ,
Beschriftungsspalten festlegen ( : AUSWEIS )
) ;
// Zeilenstatus-Handlerfunktion
selectMatchingID = Funktion ( { X } ,
// Ermitteln Sie, welche Zeilen aktuell ausgewählt sind
selectedRows = [] ;
ich = 1 ;
Für jede Reihe (
Wenn ( Ausgewählt ( Zeilenstatus () ) ,
selectedRows = V Konkat ( selectedRows , ich )
) ;
ich ++;
) ;
// Wenn eine Auswahl vorhanden ist, „erweitern“ Sie diese auf alle erforderlichen Zeilen
Wenn ( N-Reihe ( selectedRows ) > 0 ,
expandierteSelectedRows = [] ;
Für ( ich = 1 , ich <= N-Reihe ( selectedRows ) , ich ++,
dieseID = : AUSWEIS [ selectedRows [ ich ]] ;
MatchingRows = dt << getRowsWhere ( : AUSWEIS == dieseID ) ;
expandierteSelectedRows = V Konkat ( expandierteSelectedRows , MatchingRows ) ;
) ;
dt << selectRows ( expandierteSelectedRows ) ;
) ;
) ;
// Handler der Tabelle zuweisen
rsh = dt << MakeRowStateHandler ( selectMatchingID ) ;
// Probieren Sie es mit Graph Builder aus
dt << Graph Builder (
Größe ( 530 , 454 ) ,
Systemsteuerung anzeigen ( 0 ) ,
Variablen ( X ( : X ) , Y ( : Y ) ) ,
Elemente ( Punkte ( X , Y , Legende ( 5 ) ) , Glatter ( X , Y , Legende ( 6 ) ) )
) ;
Hallo zusammen,
Ich habe einen Weg gefunden, der funktioniert. Im Grunde müssen Sie lediglich ein Grafikskript erstellen und dort 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 im Bivariate-Fenster auf eine Reihe von Punkten klicken und diese 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 scwise,
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 im bivariaten Anzeigefeld gesucht. Um Ihr obiges Beispiel zu verwenden, möchte ich auf einen Datenpunkt für 2014 klicken und alle Punkte für 2014 hervorheben. Ich hoffe, dass es da draußen eine reine Skriptlösung gibt.
Auf jeden Fall nochmals vielen Dank für Ihre Antwort.
nkeleh,
Vielen Dank für die Frage, ob Sie in einem bivariaten X-nach-Y-Diagramm etwas auswählen können, aber dann alle entsprechenden Punkte in der hervorgehobenen Datentabelle sehen, die ähnliche IDs wie der ausgewählte Punkt haben.Auch wenn es vielleicht immer noch eine elegantere „Skripterstellung von Grund auf“-Antwort auf das gibt, was Sie tun möchten, habe ich mit der neuen JMP 12 Application Builder-Funktion eine einfache Möglichkeit gefunden, mit der ein Diagramm als Datenfilter verwendet werden kann.Dann können Sie hoffentlich Teile dieses vorgefertigten Skripts in Ihrer aktuellen Arbeit verwenden oder diese sofort einsatzbereite Funktion einfach so nutzen, wie sie ist.Beachten Sie, dass ich die JMP-Version 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-Maßen aufweisen. Anschließend haben wir die Datentabelle und dann eine Verteilung der Spalten in einem Fenster (Windows in JMP kombinieren, 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 durch X zeigt.Wenn Sie an dieser Stelle einen Punkt auswählen, erfolgt die Auswahl eigentlich nur auf der Grundlage der X- und Y-Koordinaten.Es ist kein Problem, das ID-Label für diesen Punkt anzuzeigen, aber dadurch wird nur der exakte Punkt wieder in Ihrer Datentabelle schattiert (ausgewählt).Das Problem besteht also darin, dass die Bivariate nach Übereinstimmungen sucht, die nur auf ähnlichen X- und Y-Koordinaten und nicht auf gemeinsamen IDs basieren.Siehe die nächste benutzerdefinierte Berichtsansicht.
Daher dachten wir, wir könnten dies vielleicht zu einem wirklich einfachen zweistufigen Prozess machen, indem wir neben der Bivariate ein „Hilfsdiagramm“ erstellen, das es mir dann ermöglichen würde, alle interessierenden ID-Punkte mit einem Klick auszuwählen.Dazu habe ich eine Verteilung für die ID erstellt (die ich zur besseren Auswahlmöglichkeit in einen nominalen Datenspaltentyp umgewandelt habe) und dann alle Anzeigeoptionen außer einem Mosaikdiagramm deaktiviert.Anschließend wurden sowohl die Verteilungs- als auch die bivariaten Diagramme in einem Fenster zusammengeführt, 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 „Application Builder“ öffnet (nachdem wir die zugrunde liegende Datentabelle ausgewählt haben).Jetzt ist es im Application Builder ganz 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 ... bei der ich zuerst den Punkt auf dem Diagramm „Bivariate Anpassung Y nach Dadurch werden nun alle ähnlichen IDs in der Datentabelle hervorgehoben.Es ist auch schön, im Diagramm „Bivariate Y-nach-X-Anpassung“ alle Punkte grafisch zu sehen, die derselben ID-Nummer entsprechen, nachdem wir sie im Mosaikdiagramm ausgewählt haben.


Jetzt können Sie zum roten Dreieck unter der Berichtsüberschrift 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 wenn dies nicht so einfach ist wie die Möglichkeit, dies direkt aus der bivariaten Anpassung Y nachIch werde diese JMP-Arbeitsdatei mit gespeicherten Skripten anhängen, damit Sie sie ebenfalls auschecken können.
Hoffe das hilft!