Hallo alle,
Ich verwende JMP15 seit einem Jahr, fange aber 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 zwei Tabellen: Daten (auf denen ich das Skript ausführe, um value=f(time) darzustellen) und Datumsangaben, die eine Spalte mit Datumsangaben 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 der Tabellendaten, dem 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 Referenzzeilen für jeden Wert der Tabelle „Daten“ zu erstellen.
Folgendes habe ich versucht:
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 Referenzlinie.
Wie kann ich dieses Problem lösen?
Letzte Frage: Wenn ich „Page(:cat)“ nicht in die Diagrammvariablen einfüge, erscheint keine Referenzlinie ...
Ich danke Ihnen 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 );
);
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 )} )
);
);
);