So legen Sie Ebenen in einem Diagramm global fest<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich verwende einige Skripte, die aus Diagrammen erstellt wurden. Oft enthalten diese Diagramme Daten, die JMP in Ebenen unterteilt, obwohl sie für meine Zwecke praktisch gleich sind. Der folgende Code dient beispielsweise für ein Diagramm der durchschnittlichen Ausschlussraten auf verschiedenen Websites.
Diagramm (
X ( : IDENT-Code ) ,
Y ( Bedeuten ( : Ausschlussrate )) ,
Fehlerbalken zum Mittelwert hinzufügen ( Name ( „Konfidenzintervall (gepoolt)“ )( 0,95 )) ,
Overlay-Achse << {{ Format ( „Fester Dezember“ , 12 , 3 ) , Mindest ( 0,935 ) , Max ( 0,9975 ) ,
Inc ( 0,005 ) , Kleinere Zecken ( 1 )}} ,
Stapelachse überlagern << {{ Format ( „Fester Dezember“ , 12 , 0 ) , Mindest ( - 1.5 ) , Max ( 8.5 ) , Inc ( 1 ) ,
Kleinere Zecken ( 1 )}} ,
Ebene [ 1 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 2 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 3 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 4 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 5 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 6 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Ebene [ 7 ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
Y [ 1 ] << Punktediagramm ( 1 ) ,
SendToReport (
Versenden ({} , „102“ , ScaleBox , { Format ( "Prozent" , 6 , 0 ) , Hauptraster anzeigen ( 1 )}) ,
Versenden ({} , „“ , AxisBox ( 2 ) , { Achsenbeschriftung hinzufügen ( „Mittelwert (Ausschlussrate)“ )}) ,
Versenden ({} , „Mittelwert (Ausschlussrate)“ , TextEditBox , { Legen Sie die Schriftgröße fest ( 20 )}) ,
Versenden (
{} ,
„Diagrammdiagramm“ ,
FrameBox ,
{ Rahmengröße ( 704 , 536 ) , Markierungsgröße ( 6 )}
)
)
)
Als das Skript für den vorherigen Bericht erstellt wurde, gab es sieben Standorte, jetzt sind es jedoch zehn, sodass die letzten drei Diagramme Standardeinstellungen verwenden. Gibt es eine Möglichkeit, diese Ebenen in Zeiten wie diesen, in denen sich die Anzahl der Ebenen geändert hat, global statt einzeln festzulegen?
Betreff: So legen Sie Ebenen in einem Diagramm global festSo, ich bin jetzt in einem anderen Berichtszyklus und habe diesen Thread vom letzten Jahr gefunden. Ich habe es versucht pmroz Gestern habe ich den Vorschlag gemacht und es hat super funktioniert, bis es aufgehört hat. Das erste Mal habe ich die von vorgestellte Technik angewendet pmroz es hat perfekt funktioniert. Für jede Ebene im Datensatz wurde auf jeden Punkt im Diagramm die richtige Farbe und der richtige Markierungstyp angewendet. Als ich versuchte, die Technik in einem anderen Datentabellenskript zu verwenden, funktionierte sie nicht. Das Skript wurde ohne Fehler ausgeführt, es wurden jedoch die Standardfarben und -markierungen für JMP anstelle der von mir im Skript definierten Farben und Markierungen verwendet. Interessanterweise verwendet das erste Skript, das ich geändert habe, jetzt auch die JMP-Standardeinstellungen anstelle der von mir im Skript definierten.
Hier ist der Code:
Names Default To Here(1);
Delete Symbols();
dt = Current Data Table();
UniqueValueList = Function({inList},
{Default Local},
tmp = [=> 0];
Insert Into(tmp, inList);
tmp << Get Keys;
);
identCodes = :IDENT Code << Get Values;
uniqueCodes = UniqueValueList(identCodes);
nCrossings = NItems(uniqueCodes);
dt << Chart(
X(:IDENT Code),
Y(Mean(:Read Rate)),
Add Error Bars to Mean(Name("Confidence Interval (pooled)")(0.95)),
Overlay Axis << {{Format("Fixed Dec", 12, 2), Min(0.77), Max(1.05), Inc(0.02),
Minor Ticks(1)}},
Overlay Stack Axis << {{Min(-10)}},
For(i = 1, i <= nCrossings, i++,
Level[i] << {Colors(-4221340), Markers(29)}
),
Y[1] << Point Chart(1),
SendToReport(
Dispatch(
{},
"102",
ScaleBox,
{Format("Percent", 6, 0), Minor Ticks(1), Show Major Grid(1),
Show Minor Grid(0)}
),
Dispatch({}, "", AxisBox(2), {Add Axis Label("Mean(Read Rate)")}),
Dispatch({}, "Mean(Read Rate)", TextEditBox, {Set Font Size(20)}),
Dispatch(
{},
"Chart Graph",
FrameBox,
{Frame Size(1056, 464), Marker Size(6)}
)
)
)Basierend auf dem, was ich vom JSL-Debugger sehen konnte, nKreuzungen wird korrekt eingestellt, aber es scheint, als würde die For-Schleife in der Chart-Anweisung ignoriert. Leider hilft es nicht, den Code schrittweise durchzugehen, da Chart eine einzelne Anweisung ist und der Debugger seinen Code daher nicht schrittweise durchläuft.
Was mache ich falsch?
Betreff: So legen Sie Ebenen in einem Diagramm global festDas scheint das zu sein, wonach ich suche. Ich habe mich gefragt, ob ich eine For-Schleife in den Diagrammcode einfügen könnte, wusste aber nicht, dass ich benutzerdefinierte Funktionen in JSL erstellen kann oder in diesem Fall hätte tun müssen. Ich werde deine Lösung ausprobieren.
Betreff: So legen Sie Ebenen in einem Diagramm global festSie können eine Schleife direkt in den Diagrammcode einfügen.
dt = Neuer Tisch ( "Beispiel" , Zeilen hinzufügen ( 8 ) ,
Neue Spalte ( „IDENT-Code“ , Charakter , „Nominal“ ,
Werte festlegen ( { „AA“ , „AA“ , „AA“ , „BB“ , „BB“ , „CC“ , „CC“ , „CC“ } ) ) ,
Neue Spalte ( „Ausschlussrate“ , Numerisch , „Kontinuierlich“ , Format ( "Am besten" , 12 ) ,
Werte festlegen ( [ 0,05 , 0,07 , 0,08 , 0,5 , 0,6 , 0,4 , 0,3 , 0,2 ] ) )
) ;
ident_codes = dt : IDENT-Code << Werte bekommen ;
unique_codes = get_unique_values ( ident_codes ) ;
ncodes = nitems ( unique_codes ) ;
dt << Diagramm (
X ( : IDENT-Code ) ,
Y ( Bedeuten ( : Ausschlussrate )) ,
Fehlerbalken zum Mittelwert hinzufügen ( Name ( „Konfidenzintervall (gepoolt)“ )( 0,95 )) ,
Overlay-Achse << {{ Format ( „Fester Dezember“ , 12 , 3 ) , Mindest ( 0,935 ) , Max ( 0,9975 ) ,
Inc ( 0,005 ) , Kleinere Zecken ( 1 )}} ,
Stapelachse überlagern << {{ Format ( „Fester Dezember“ , 12 , 0 ) , Mindest ( - 1.5 ) , Max ( 8.5 ) , Inc ( 1 ) ,
Kleinere Zecken ( 1 )}} ,
// Weisen Sie jedem Level die gleiche Farbe und Markierung zu
für ( ich = 1 , ich <= ncodes , ich ++,
Ebene [ ich ] << { Farben ( - 4221340 ) , Markierungen ( 29 )} ,
) ,
Y [ 1 ] << Punktediagramm ( 1 ) ,
SendToReport (
Versenden ({} , „102“ , ScaleBox , { Format ( "Prozent" , 6 , 0 ) , Hauptraster anzeigen ( 1 )}) ,
Versenden ({} , „“ , AxisBox ( 2 ) , { Achsenbeschriftung hinzufügen ( „Mittelwert (Ausschlussrate)“ )}) ,
Versenden ({} , „Mittelwert (Ausschlussrate)“ , TextEditBox , { Legen Sie die Schriftgröße fest ( 20 )}) ,
Versenden (
{} ,
„Diagrammdiagramm“ ,
FrameBox ,
{ Rahmengröße ( 704 , 536 ) , Markierungsgröße ( 6 )}
)
)
)
Hier ist der Code für die Funktion get_unique_values:
Get_unique_values = Funktion ( { in_list } ,
{ Standardmäßig lokal } ,
tmp = [ => 0 ] ;
Einfügen in ( tmp , in_list ) ;
tmp << Schlüssel bekommen ;
) ;
Betreff: So legen Sie Ebenen in einem Diagramm global festDanke, aber das ist nicht das, was ich mit global meine. Ich bin nicht daran interessiert, JMP daran zu hindern, alle Diagramme auf die gleiche Weise zu erstellen. Ich habe Skripte für bestimmte Datensätze in einem laufenden Projekt, bei denen sich die Anzahl der Ebenen von Berichtszeitraum zu Berichtszeitraum ändern kann. Da JMP das Skript generiert, sind die Einstellungen für Ebenen explizit. Daher möchte ich wissen, ob es eine Möglichkeit gibt, Ebenen global festzulegen innerhalb eines Diagramms . Ich habe ein ähnliches Skript für einen Datensatz mit 46 Ebenen und das Skript hat 46 Ebenenparameterzeilen generiert, obwohl jede Ebene genau die gleichen Einstellungen hat.
Es scheint, dass JMP davon ausgeht, dass Ebenen immer explizit sind und der Benutzer möchte, dass sie im Diagramm immer unterschiedlich dargestellt werden. Es gibt Fälle, in denen das stimmt, aber was in diesem Diagramm als Ebenen betrachtet wird, sind die Kategorien auf der x-Achse.
Betreff: So legen Sie Ebenen in einem Diagramm global festSie können die Standardeinstellungen in den Einstellungen festlegen:
Datei==>Einstellungen==>Grafiken
Dort können der Standardmarker und der Farbsatz festgelegt werden

Wenn dies nicht Ihren Wünschen entspricht, können Sie Ihr Skript leicht ändern, um die Anzahl der gefundenen Ebenen zu testen und den Code nach Bedarf zu generieren.