Hallo alle,
Ich benutze JMP15 seit 1 Jahr, aber ich fange gerade erst an, mich für Skripte zu interessieren.
Ich möchte ein Skript schreiben, um Referenzlinien in einem Diagramm basierend auf einer Tabelle anzuzeigen.
Ich habe 2 Tabellen: Daten (auf denen ich das Skript ausführe, um Wert = f (Zeit) darzustellen) und Daten, die eine Spalte mit Daten enthalten, die den Referenzlinien entsprechen, die ich im Diagramm haben möchte.
Diese Tabellen sind meinem Beitrag beigefügt.
Hier ist mein aktuelles Skript, das eine Referenzzeile basierend auf dem ersten Element von Tabellendaten, Spaltendatum, anzeigt.
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} ) )
);Ich möchte eine "For"-Schleife erstellen, um automatisch Referenzlinien für jeden Wert der Tabelle "dates" zu erstellen.
Hier ist, was ich versucht habe:
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ),
{
For( i = 1, i <= N row( dates), i++,
f = dates [ i ];
Add Ref Line( f, "Dotted", "Blue", "", 2 )
);
})
);Aber wenn ich das Skript ausführe, erscheint keine Referenzzeile.
Wie kann ich dieses Problem lösen?
Letzte Frage: Wenn ich "Page(:cat)" nicht in die Diagrammvariablen einfüge, erscheint keine Referenzlinie ...
Danke für Ihre Hilfe !!
Willkommen in der Diskussions-Community!
Hier ist eine Möglichkeit, die Referenzlinien hinzuzufügen

Eine Dokumentation zur Verwendung der Anzeigebäume zur Bearbeitung der JMP-Ausgabe finden Sie im Skripting-Index.
Names Default To Here( 1 );
dt = Data Table( "data" );
dates = Data Table( "dates" );
ref1 = dates:name( "date" )[1];
gb = Graph Builder(
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} )
)
);
// Add reference lines
For( i = 1, i <= N Rows( dates ), i++,
// Add for Cat = B
(Report( gb )[axisbox( 1 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
// Add for Cat = C
(Report( gb )[axisbox( 3 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
);
Danke Jim für deine schnelle Antwort, wirklich hilfreich!
Hier ist eine Lösung, die keine Anzeigebäume verwendet.
Names Default To Here( 1 );
dt = Data Table( "data" );
dts = Data Table( "dates" );
// Get the unique values of cat
summarize(cat_unique = by(dt:cat));
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
);
// Add reference lines
for (c = 1, c <= nitems(cat_unique), c++,
scbox = c + 1;
for (i = 1, i <= nrows(dts), i++,
ref = dts:date[i];
gb << SendToReport(
Dispatch( {}, "time", ScaleBox( scbox ), {Add Ref Line( ref, "Dotted", "Red", "", 2 )} )
);
);
);