Schalten Sie die Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umIch würde gerne ein Add-In konfigurieren, um die Sichtbarkeit der wichtigsten Rasterlinien in Graph Builder (sowohl X als auch Y) umzuschalten, aber ich habe Probleme mit dem JSL-Teil ...Ich habe das GB-Objekt und das SendToReport( .. Dispatch...-Code, aber es scheint, dass der Variablenname mit den X- und Y-Achsen verknüpft werden soll, und mein Add-In weiß nicht, was das ist.
Ist das machbar?
Folgendes habe ich bisher:
// steps to get last_gb scriptable object...<BR /><BR />// send setting change<BR />last_gb << SendToReport(
Dispatch(
{},
"myXaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
),
Dispatch(
{},
"myXYaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
)
)Datenexploration und -visualisierungBetreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenHallo @BHarris ,
Wie wäre es, wenn Sie das Achsenfeld verwenden würden, um das Hauptraster anzuzeigen?
Wenn Sie „send“ zum Melden einer Nachricht verwenden möchten, besteht eine Idee darin, „get variable message“ zu verwenden, um eine Variable abzurufen.
// #1 Example for Axis Box
gb_rpt = gb_ob << Report();
gb_rpt[axis box( 1 )] << Show Major Grid( 1 );
gb_rpt[axis box( 2 )] << Show Major Grid( 1 );
// #2 Example for send to report
var1 = gb_ob << Get Variable( 1 );
var2 = gb_ob << Get Variable( 2 );
Eval(
Substitute(
Expr(
gb_ob << send to report(
Dispatch(
{},
_var_,
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
)
)
),
Expr( _var_ ), Eval( Char( var1[1] ) )
)
);
Ich hoffe, dass es für Ihr Problem funktioniert.
Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenDas ist ganz nah dran!Ich möchte, dass das Skript den Rasterstatus bei jeder Ausführung ein- und ausschaltet, aber dadurch können die Raster nur aktiviert werden.Ich habe gerade etwa eine Stunde damit verbracht, herauszufinden, wie man den Rasterstatus aus einer AxisBox liest, aber die Dokumentation wird sehr spärlich, wenn ich zu „Label Row“ komme ...
Wie kann ich den aktuellen Stand des Hauptnetzes ablesen?
Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenMöglicherweise gibt es bessere Möglichkeiten, aber eine Möglichkeit, die Sie ausprobieren könnten, besteht darin, << get script an axisbox zu senden und daraus das Show Major Grid abzurufen. Wenn das dort überhaupt nicht sichtbar ist, sollten Sie den Wert aus den Benutzereigenschaften abrufen können
axis_script = axisbox << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"];
Print("Grid");
, // not found
Arg(Arg(Get Preference(Major Grid Lines)));
Print("Preference");
);
Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenViel näher!Es deaktiviert jetzt die Gitterlinien für das erste X- und das erste Y-Achsenfeld, jedoch nicht für alle Achsenfelder in einem mehrachsigen Diagramm:

Wie kann ich alle Achsenfelder durchlaufen?Folgendes habe ich bisher:
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
graphs = Filter Each({w}, win,
If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0)
);
gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;
gb_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
gb_axis2 = gb_rpt[AxisBox( 2 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
If( cur_gridValue,
gb_axis1 << Show Major Grid( 0 );
gb_axis2 << Show Major Grid( 0 );
,
gb_axis1 << Show Major Grid( 1 );
gb_axis2 << Show Major Grid( 1 );
);(ps.Ich hätte die Sache mit „get script“ oder „arg( arg(“ alleine nie herausgefunden.Ich habe das Gefühl, ein halbkompetenter Skripter mit 25 Jahren Erfahrung zu sein, aber ich fühle mich immer noch ziemlich verloren in JSL – oft ist es sehr schwer zu sagen, was es tut.)
Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenSie könnten << XPath verwenden, um alle AxisBox-Referenzen abzurufen und sie dann entweder zu durchlaufen und einzeln zu ändern, ODER an alle dieselbe Nachricht zu senden. Dies erfordert möglicherweise einige zusätzliche Prüfungen, um keine Achsenboxen zu ändern, die Sie nicht ändern möchten.
axisboxes = gb_rpt << XPath("//AxisBox");
<< XML abrufen kann hilfreich sein, wenn Sie prüfen, ob in der AxisBox etwas Spezifisches vorhanden ist, das Ihnen helfen könnte, die Referenzen einzugrenzen (charID könnte einer sein). Anschließend können Sie die XPath-Abfrage ändern, um dies zu verwenden und genauer zu machen.

Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenDas hat es geschafft!Hier ist die Lösung für alle, die ein Skript benötigen, um Gitterlinien in allen Diagrammen in Graph Builder ein-/auszuschalten:
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
graphs = Filter Each( {w}, win,
If( Length( w << XPath( "//OutlineBox[@helpKey='Graph Builder']" ) ) > 0,
1,
0
)
);
gb = graphs[N Items( graphs )][Outline Box( "Graph Builder" )] << Get Scriptable Object;
gb_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
axisboxes = gb_rpt << XPath( "//AxisBox" );
For Each( {anAxisBox,anIndex}, axisboxes,
If( cur_gridValue,
anAxisBox << Show Major Grid( 0 ),
anAxisBox << Show Major Grid( 1 )
)
);Vielen Dank an Jarmo und Yuichi für ihre Hilfe!
****************************************
PS.Ich verstehe den Tipp „<< Get XML“ überhaupt nicht – ich habe versucht, ihn an vier verschiedenen Stellen abzulegen, habe aber nie XML mit „“ darin herausbekommen (obwohl ich viel XML herausbekommen habe). .).Wie haben Sie gelernt, JSL so gut zu skripten?
Betreff: Sichtbarkeit der wichtigsten Rasterlinien im Graph Builder per Tastendruck umschaltenIch habe Scripting einfach durch Scripting gelernt (die Art und Weise, wie ich Scripte schreibe, besteht darin, dass ich viele verschiedene Dinge ausprobiere, die Dokumentation lese (für JSL normalerweise in dieser Reihenfolge: Scripting Index, Scripting Guide, JMP Community, JSL Syntax Reference) und mehr Dinge ausprobiere und scheitern oft , aber am Ende gelingt es mir fast immer, eine funktionierende Lösung zu finden.
Ich denke, Sie können << get xml entweder an die Analyse- oder Berichtsebene des JMP-Objekts senden. Manchmal kann man der korrekten Referenz sogar näher kommen, indem man zuerst ein Abonnement erstellt und dann << get xml verwendet, aber in diesem Fall habe ich es einfach an gb gesendet. Unten ist ein weiteres Beispiel mit Big Class.jmp und danach, wo ich es in Ihr Skript eingefügt habe. Normalerweise lösche ich das Protokoll, führe << get xml line aus, klicke auf log und verwende dann Strg+F, um etwas zu suchen (wenn ich weiß, wonach ich suche). Wenn Sie sehr großes XML untersuchen müssen, kann es hilfreich sein, das XML als .xml-Datei zu speichern und es mit einer Anwendung zu öffnen, die Syntaxhervorhebung für XML bietet (normalerweise reicht Notepad++ aus).

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows([1, 2]) << Hide and Exclude(1) << Clear Select;
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Smoother(X, Y, Legend(10)))
);
// Report(gb) << Get Xml; // works also on report
gb << Get XML; // run just this line to see xml in log or use Write() (write is the cleanest option)
// Write(gb << Get XML);
// xml_str = gb << get xml;
// show(xml_str);
where_tb = Report(gb) << XPath("//TextBox[contains(text(), 'Where(')]");
where_tb << Text Color("Blue"); // usually used to hide where text << Set Visibility("Collapse");
Und hier würde ich << Get XML in Ihr Skript einfügen, es einmal ausführen, die XML-Datei überprüfen und dann die Zeile aus dem Code entfernen, da es normalerweise keinen Sinn macht, << Get XML fertigen Skripten zu überlassen.
