<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Graph Builder arbeitet erfolgreich mit dem Datenfilter zusammen und passt die gezeichneten Punkte richtig an, wenn der Datenfilter-Schieberegler bewegt wird. Außerdem werden die Werte der Statistiken, die das Beschriftungsfeld verwenden, erwartungsgemäß mit dem Datenfilter-Schieberegler angepasst. So weit, ist es gut. Dann wollte ich den Mittelwert einer Spalte mit „Anpassen“ und „Y-Funktion“ darstellen. Das Folgende ist das extrahierte Skript:
Grafikskript hinzufügen(
3,
Beschreibung( „Skript“),
Y-Funktion( Col Mean( :_columnexample_ ), x )
)
Die gewünschte Mittellinie wurde erfolgreich eingezeichnet. Die gezeichnete Linie reagiert jedoch nicht auf den Datenfilter-Schieberegler.
Wie kann ich den Spaltenmittelwert darstellen, der mit dem Datenfilter funktioniert?
Vielen Dank, Ian, für die Antwort. Ich habe Ihr Skript studiert und festgestellt, dass es funktioniert. In meinem Fall muss ich jedoch den Datenfilter global halten, damit viele Diagramme gleichzeitig betroffen sein können, und das ist mir noch nicht gelungen.
Aufbauend auf Jims Gedanken gibt es hier eine Möglichkeit (mit dem lokalen Datenfilter):
NamesDefaultToHere ( 1 ) ;
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
// Graph Builder
GB = dt << Graph Builder (
Systemsteuerung anzeigen ( 0 ) ,
Waage sperren ( 1 ) ,
Variablen ( X ( : Gewicht ) , Y ( : Höhe ) ) ,
Elemente ( Punkte ( X , Y , Legende ( 6 ) ) , Passformlinie ( X , Y , Legende ( 8 ) ) ) ,
) ;
// Einen Verweis auf den Bericht abrufen
gbReport = GB << Bericht ;
// Einen lokalen Datenfilter hinzufügen
ldf = GB << Lokaler Datenfilter ( Filter hinzufügen ( Säulen ( : Sex ) ) ) ;
// Zeilenstatus-Handlerfunktion, die dem Graph Builder eine horizontale Linie im Mittelwert des aktuellen hinzufügt
// Auswahl im lokalen Datenfilter
addMeanYLine =
Funktion ({ X } , { Standardmäßig lokal } ,
// Zeilen abrufen, die der aktuellen Auswahl entsprechen
Reihen = ldf << getFilteredRows ;
// Den erforderlichen Mittelwert ermitteln
mv = Bedeuten (( Spalte ( dt , "Höhe" ) << getValues )[ Reihen ]) ;
// Das Grafikskript zum Anzeigefeld des Graph Builder hinzufügen. . .
gFrames = gbReport << XPath ( "//FrameBox" ) ;
// Versuchen Sie, ein möglicherweise bereits vorhandenes Grafikskript zu entfernen
Versuchen ( Schicken ( gFrames [ 1 ] , RemoveGraphicsScript ( 1 ))) ;
// Ausdruck, der das erforderliche Grafikskript hinzufügt
ags = Ausdruck ( Schicken ( gFrames [ 1 ] , AddGraphicsScript ( PenColor ( "Rot" ) ; HLine ( Noch offen )))) ;
// 'Einbacken' des aktuellen Mittelwerts
SubstituteInto ( ags , Ausdruck ( Noch offen ) , mv ) ;
// Grafikskript hinzufügen
ags ;
) ;
// Weisen Sie den Zeilenstatus-Handler dem Anzeigefeld des lokalen Datenfilters zu
rsh = gbReport [ OutlineBox ( 1 )] << MakeRowStateHandler ( addMeanYLine ) ;
Danke für die Antwort.
Hier ist das Skript für den Datenfilter, es ist nicht lokal:
Aktuelle Datentabelle() << Datenfilter(
Standort( {325, 212} ),
Modus( Show( 1 ), Include( 1 ) ),
Filter hinzufügen( Spalten( :Bandmeter ), Wo( :Bandmeter >= -100 & :Bandmeter <= -50 ) )
);?
Ich vermute, dass das Problem bei der Include(1)-Anweisung liegt, vielleicht sollte es Exclude sein. Meine kostenlose 30-Tage-Testversion ist gerade zu Ende gegangen, daher muss ich warten, bis ich eine Lizenz zum Testen bekomme.
Einige willkürliche Anfangswerte für den Filter sind einfach deshalb enthalten, weil ich noch nicht herausgefunden habe, wie ich alle Zeilen der aktuellen Datentabelle einbeziehen kann. Im Moment schien es ein geringeres Problem zu sein, aber ich gehe auch davon aus, dass es nicht die Ursache für die Schwierigkeit bei der Verwendung des Datenfilters mit der Y-Funktion ist.
Die Lösung hängt wahrscheinlich davon ab, ob Sie einen Datenfilter oder einen lokalen Datenfilter verwenden.Wenn Sie einen Datenfilter verwenden, können Sie einen Zeilenstatus-Handler auf die Datentabelle anwenden, der die Y-Funktion neu zeichnet.Wenn es sich um einen lokalen Datenfilter handelt, liegt der Schlüssel darin, herauszufinden, was im Diagramm durch den Filter geändert wird, den man auslösen kann, um die Y-Funktion neu zu zeichnen.
Wenn Sie weitere Einzelheiten zu dem von Ihnen verwendeten Datenfilter angeben können, kann ich möglicherweise eine weitere Lösung anbieten