Im Graph Builder möchte ich eine Datenbeschriftung (keine Hover-Beschriftung) nur für ausgewählte Zeilen anzeigen. Als Demo habe ich den folgenden Code ausprobiert:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Try(
Show( dt:Selected Name ),
dt << New Column( "Selected Name",
Character,
Set Formula( If( Selected( Row State( Row() ) ) == 1, :name ) )
)
);
dt:Name << Label( 0 );
dt << Clear Row States << Select All Rows << Label << Clear Select;
dt:Selected Name << Label( 1 );
// The following doesn't work as expected
gb1 = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", FrameBox,
{Marker Size( 5 ), Marker Drawing Mode( "Normal" )}
)
)
);
nw1 = New Window( "DTB", dtb1 = Data Table Box( dt ) );
dtb1 << set selectable rows();Wenn ich eine Zeile in der Datentabelle oder aus dem Tabellenfeld auswähle oder den Datenpunkt im Graph Builder auswähle, sollte die Beschriftung in „Ausgewählter Name“ angezeigt werden. Es scheint jedoch immer ein ausgewählter Punkt dahinter zu sein! Wenn ich beispielsweise KATIE auswähle, ist der Datenpunkt hervorgehoben, aber es gibt keine Beschriftung. Wenn ich dann LOUISE auswähle, ist der Datenpunkt für diese Zeile hervorgehoben, aber der Datenpunkt für KATIE ist jetzt beschriftet!

Wenn ich aber noch einmal auf LOUISE klicke, wird die Beschriftung korrekt angezeigt:

Wenn ich schließlich alle Zeilen abwähle, bleibt die letzte Beschriftung sichtbar.
Interessanterweise funktioniert es wie erwartet, wenn ich den folgenden Code verwende, um das Tabellenfeld und den Graph Builder in dasselbe Fenster zu setzen und Zeilen aus dem Tabellenfeld oder dem Diagramm des Graph Builders auszuwählen, wobei die Beschriftung nur für die ausgewählten Zeilen angezeigt wird:
dt << clear select;
nw2 = New Window( "Demo",
H List Box(
dtb2 = Data Table Box( dt ),
gb2 = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", FrameBox,
{Marker Size( 5 ), Marker Drawing Mode( "Normal" )}
)
)
)
)
);
dtb2 << set selectable rows();Gibt es für mein Vorhaben eine bessere Möglichkeit?
Ich sehe dieses Verhalten bei JMP 17.2 und JMP 18.
@jthi schrieb:
Es funktioniert nicht mit dem von mir bereitgestellten Code oder wenn ich eine ähnliche Idee auf Ihre Daten anwende (bei mir funktioniert es mit JMP17.2/JMP18.0 unter Windows 10)?
Ihre einfache Funktion mit << Ausführen-Formeln funktioniert bei mir in JMP 17.2/18.0 unter Mac OS 13.6.7 nicht.
Es funktioniert nicht mit dem von mir bereitgestellten Code oder wenn ich eine ähnliche Idee auf Ihre Daten anwende (bei mir funktioniert es mit JMP17.2/JMP18.0 unter Windows 10)?
Danke für den Vorschlag! Leider hat es bei mir so nicht funktioniert, aber das Folgende funktioniert:
f = Function({a},
rr = dt << get selected rows;
dt << clear select;
wait(0);
dt << select rows( rr );
rs = dt << Make Row State Handler(f);
);
rs = dt << Make Row State Handler(f);Es fühlt sich jedoch wie eine schreckliche Problemumgehung an. Die Anweisung „Make Row State Handler“ innerhalb der Funktion scheint notwendig zu sein, da der Handler nach dem ersten Aufruf von f() vergessen wird (ich bin nicht sicher, ob ich verstehe, was hier passiert!).
Ich denke, Sie müssen möglicherweise etwas verwenden, um eine kleine Verzögerung zu verursachen. Eine Möglichkeit ist ein Zeilenstatushandler (diese können sehr unzuverlässig sein) + Formeln ausführen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Try(
Show(dt:Selected Name),
dt << New Column("Selected Name",
Character,
Set Formula(If(Selected(Row State(Row())) == 1, :name))
)
);
dt:Name << Label(0);
dt << Clear Row States << Select All Rows << Label << Clear Select;
dt:Selected Name << Label(1);
// The following doesn't work as expected
gb1 = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:height), Y(:weight)),
Elements(Points(X, Y, Legend(3))),
SendToReport(
Dispatch({}, "Graph Builder", FrameBox, {Marker Size(5), Marker Drawing Mode("Normal")})
)
);
nw1 = New Window("DTB", dtb1 = Data Table Box(dt));
dtb1 << set selectable rows();
f = Function({a},
dt << run formulas;
);
rs = dtb1 << Make RowState Handler(f);