[Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeHallo,
Ich bin neu in JMP. Es ist eine leistungsstarke Software!
Aus diesem Grund möchte ich ein Skript schreiben, das mehrere Y aus verschiedenen Spalten (eigentlich alle n Spalten) als Funktion eines X darstellen kann.
Ich habe es dank der Graph Builder-Schnittstelle geschrieben, würde es aber gerne in einer Schleife skripten.
Ich habe so etwas gemacht, um die Verteilung darzustellen (aber es ist leider nicht derselbe Maßstab ...)
//Distributions Std Dev
New Window( "Side by Side",
H List Box(
Distribution(
Continuous Distribution( Column( :median_range_mm ))
);
for ( p = 2, p <= 64, p++,
nom = "median_range_mm " || char(p);
col = Column(nom);
Distribution(
Continuous Distribution( Column( col ), Std Error Bars( 1 ) );
/*SendToReport(
Dispatch(
{"Distributions", Column( col )},
"1",
ScaleBox,
{Min( 1450 ), Max( 1820 ), Inc( 20 ), Minor Ticks( 0 ),
Label Row Nesting( 1 )}
)
)*/
)
)
)
Dies ist, was ich für mein Hauptproblem versucht habe. Das Ergebnis ist nur ein sich öffnendes Fenster des Graph Builder.
Ich möchte die Spalte [ref, ref 1, ref 2 bis ref 64] auf der Y-Achse und currentTimeMillis auf der X-Achse darstellen
New Window( "Ref",
H List Box(
Graph Builder(
For (r = 2 , r <= 64, r++,
name = "ref " || char(r);
col = Column(name);
Variables( X( :currentTimeMillis ), Y (Column (col), Position( 1 ) ) ),
Elements(
Points( X, Y(r) , Legend( 29 ) ),
Smoother( X , Y(r), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
)
);Vielen Dank für Ihre Hilfe.
Beifall
Betreff: [Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeMan kann ganz einfach Ausgabeobjekte erstellen, die im Voraus erstellt und dann auf Wunsch des Benutzers angezeigt werden können.Aufgrund der Geschwindigkeit von JMP generieren viele meiner Anwendungen zum Zeitpunkt einer Benutzeranfrage bestimmte Ausgaben.Sie sollten sich auch mit dem Spaltenumschalter vertraut machen, der es dem Benutzer ermöglicht, aus einer Liste auszuwählen, welche Spalten analysiert und angezeigt werden sollen.
Betreff: [Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeIst es möglich, einzelne Diagramme (z. B. Easy-Access-Listen) zur späteren Verwendung zu speichern, anstatt sie alle in einem einzigen H-Listenfeld darzustellen?Danke.
Betreff: [Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeIch bin etwas verwirrt ... aber ich biete diesen Code als mögliches Beispiel für eine Lösung an.Aus dem letzten von Ihnen bereitgestellten Code geht hervor, dass Sie die Namen der Spalten in Ihrer Datentabelle in „Ref“ ändern.Da JMP nicht zulässt, dass Sie zwei Spalten mit demselben Namen haben, wird die zweite Spalte, die Sie in „Ref“ umzubenennen versuchen, tatsächlich „Ref 2“ genannt.Und das geht bis in die Spalte „Ref 64“ weiter.Ich schlage außerdem vor, dass Sie Ihren Code noch einmal auf die Benennung der Spalte „currentTimeMillis“ überprüfen.In Ihrem Code benennen Sie diese Spalte tatsächlich 64 Mal um (auf denselben Namen).
Unten ist mein neuer Code … er verwendet eine Beispieldatentabelle … die Spalten namens Ref – Ref 64 sind alle in einer zusammenhängenden Reihenfolge, aber da es JMP wirklich egal ist, wird der Code dies tun Funktioniert auch für Ihre Datentabelle, in der die Spalten auf Ihre über 700 Spalten verteilt sind
Names Default To Here( 1 );
// Build some sample data
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Column( dt, 6 ) << set name( "ref" );
For( i = 7, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
// Build the JSL code for the Graph Builder
theExpr = "dt << Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( :ref )";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( :ref " || Char( i ) || ", Position( 1 ) )"
);
theExpr = theExpr || "),
Elements(
Points(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || "
,Legend( 5 )
),
Smoother(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || " ,
Legend( 6 )
)
)
)";
// Execute the generated code
Eval( Parse( theExpr ) );
Betreff: [Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeVielen Dank für deine Antwort, Jim!
Aber vielleicht habe ich mein Problem falsch dargestellt.
Tatsächlich hätte ich es gerne Alle meine Darstellungen in derselben Grafik .
Außerdem wurde meine Y-Spalte bereits alle 11 Spalten festgelegt, und currentTimeMillis erscheint nur einmal am Anfang:
//Set columns
For( i = 1, i <=709 , i++,
For ( j = 0, j <= 63, j++,
If ( i == 2, Column(i) << set name( "currentTimeMillis" ),i == 15 + 11*j, Column(i) << set name( "ref" ),
)
)
)Schließlich wurde „__col__“ nicht definiert („col“ wurde definiert, aber in einer anderen Funktion zur Verteilung), daher verstehe ich nicht, warum Sie es hier verwendet haben.
Danke noch einmal.
Betreff: [Script JLS]: Schleife zum gemeinsamen Zeichnen mehrerer DiagrammeHier ist ein Beispiel, wie ich es machen würde
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
For( i = 6, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
New Window( "Ref",
hlb = H List Box(
)
);
For( r = 2, r <= 64, r++,
name = "ref " || Char( r );
Eval(
Substitute(
Expr(
outputhlb = H List Box(
Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( Column( __col__ ), Position( 1 ) )
),
Elements(
Points( X, Y( r ), Legend( 29 ) ),
Smoother( X, Y( r ), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
),
Expr( __col__ ), Parse( ":" || name )
)
);
hlb << append( outputhlb );
);