Ausblenden von Legendenelementen im Graph Builder mithilfe von JSLIch habe ein lästiges Problem mit dem Graph Builder in JSL.Um sowohl die Punkte als auch eine glattere Darstellung in einem Streudiagramm zu ermöglichen, ändere ich die Transparenz der Punkte.Ich kann dafür sorgen, dass das ganz gut funktioniert, aber wenn ich das Diagramm später in JSL bearbeite, werden die Punkte standardmäßig wieder zur Legende hinzugefügt, anstatt ausgeblendet zu bleiben. Ich gehe davon aus, dass JMP der Meinung ist, dass sie nicht mehr überflüssig sind.Ich weiß, dass Sie im Diagrammersteller manuell Elemente deaktivieren können, die Sie nicht anzeigen möchten. Gibt es jedoch eine Möglichkeit, dies in JSL zu tun?


Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLUnd danke dir @anne_sa .Ihre Informationen haben mich in die richtige Richtung gewiesen.
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLDanke @txnelson Und @jjswan33 für eure Antworten!
Ich muss es leicht anpassen, damit es mit meinem Drehbuch übereinstimmt, aber ich denke, ich werde es schaffen.
Danke noch einmal 
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLIch habe eine alternative Lösung gefunden, die meiner Meinung nach sauberer ist als Jims Brute-Force-Methode.
Stattdessen definiere ich am Anfang meiner Funktion zwei Listen:
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);um die beiden Listen zu erstellen, die für die Punkte- und Linienlegendenelemente (in meinem Fall) benötigt werden, und dann diese Listen als Matrizen zu übergeben, die wie folgt an den Graph Builder gesendet werden:
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)Vollversion der aktualisierten Funktion:
RadPlotCreator1XGroupTest = Function({dt, XCol, YCol, OverlayCol, GroupXCol}, {Default Local},
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)
)
);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLHier ist die Brute-Force-Methode, mit der ich solche Probleme löse.Ich erstelle einfach den erforderlichen JSL-Code und führe dann die von mir erstellte JSL aus. Bitte beachten Sie, dass ich in der von mir verwendeten Datentabelle „Große Klassen“ eine zusätzliche Altersgruppe von 18 Jahren hinzugefügt habe.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of Age groups
Summarize( dt, ageGroups = by( :age ) );
// Build the JSL
theExpr =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
LegendBox,
{Legend Position(
{6, [ -1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
theExpr = theExpr || "], 7, [0";
For( i = 1, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]}
), Position( {-1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
For( i = 0, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]} ) } )));";
// Execute the JSL string
eval(parse(theExpr));

Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLHoppla, falsches Kopieren/Einfügen, sorry für die Verwirrung!
Machen wir es noch einmal (mit JMP15)!
Zuerst habe ich die folgende Grafik:

Und das entsprechende Skript lautet:
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
Manuell ändere ich die Legende und deaktiviere die mit den Punkten verknüpften Elemente:

Ich bekomme diese Grafik:

Und das aktualisierte Skript lautet:
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{6, [-1, -1, -1, -1, -1, -1], 7, [0, 1, 2, 3, 4, 5, 6, -3]}
), Position( {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, -3} )}
)
)
)Gibt es eine einfache Möglichkeit, diesen zweiten Schritt mit JSL zu bewältigen?
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLIch persönlich bekomme die Dual-Legenden sowohl in JMP 12 als auch in JMP 14.Ich habe meinen Code nicht früher gepostet, aber unten ist die Funktion aufgeführt, die ich verwende, um die Diagramme zu erstellen, bei denen ich das Problem habe.In meinem Fall glaube ich, dass JMP, sobald ich den Code verwende, um die Transparenz der Punkte festzulegen, das Punktlegendenelement nicht mehr für redundant hält und das Ergebnis anzeigt.
RadPlotCreator1X1YGroup = Function({dt, XCol, YCol, OverlayCol, GroupXCol, GroupYCol}, {Default Local},
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Group Y( GroupYCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
)
)
);
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLWelche Version von JMP verwenden Sie und auf welchem Betriebssystem?Mit der von Ihnen bereitgestellten JSL kann ich nicht die von Ihnen angegebenen Ergebnisse erzielen.Für JMP 15 bekomme ich

In JMP 13 und JMP 14 erhalte ich:

In JMP 11 und JMP 12 erhalte ich:

Aber ich kann das Diagramm, das Sie präsentieren, mit den verschiedenen Markierungen und sowohl den Punkten als auch der rechteckigen Markierung in der Legende nicht verstehen.
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLHallo @txnelson ,
Danke für deine Antwort.
Allerdings möchte ich die Legende nicht komplett ausblenden oder löschen, sondern nur einen Teil davon.
Standardmäßig habe ich folgende Grafik:

Und ich würde gerne nur die Punktelemente in der Legende ausblenden, um das zu bekommen:

Anscheinend bedeutet „-1“ in der Legendenpositionsoption „Dieses Element ausblenden“, aber ich sehe nicht, wie ich diese Option ohne vorherige Informationen über das Diagramm einfach verwenden kann.
Ich hoffe, es ist klarer.
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLMit dem Element „Legende anzeigen“ können Sie steuern, ob die Legende angezeigt oder ausgeblendet wird.Hier ist der Eintrag aus dem Scripting Index, der es zeigt
Hilfe==>Skriptindex

Sie können auch die gesamte Legendenkomponente löschen, indem Sie sie mithilfe der Anzeigebaumfunktionen in JMP löschen
gb = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y))
);
report(gb)[LegendBox(1)]<<DELETE></DELETE>
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLHallo allerseits,
Ich stehe derzeit vor dem gleichen Problem: Ich verstecke einen Teil der Graph Builder-Legende mithilfe von JSL.
Ich denke, die Optionen „Legende“ oder „Legendenposition“ könnten hilfreich sein, aber ich habe Schwierigkeiten, die Funktionsweise vollständig zu verstehen, insbesondere wenn wir die Anzahl der Gruppen nicht kennen.
Ich möchte zum Beispiel diese Art von Diagramm mit der Big-Class-Tabelle erstellen und die Punktelemente nicht in der Legende anzeigen:

Das entsprechende Skript lautet:
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ), Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{4, [0, 1, 2, 3, 4, 5, 6, -3], 5, [-1, -1, -1, -1, -1, -1]}
), Position( {0, 1, 2, 3, 4, 5, 6, -3, -1, -1, -1, -1, -1, -1} )}
)
)
)Gibt es eine Möglichkeit, den Prozess zu verallgemeinern, ohne die Anzahl der Stufen für die Altersvariable zu kennen?
Jede Eingabe wäre dankbar
Danke
Betreff: Ausblenden von Legendenelementen im Graph Builder mit JSLIch vermute, dass es dafür keine JSL-Lösung gibt.Wenn das der Fall ist, sollte es sehr viel geben.