Hallo JMP-Community,
Ich habe ein Skript, das zwei Sätze von Spalten in zwei verschiedene Listen füllt.
Dann iteriere ich durch die Liste der Spaltennamen aus beiden Sätzen und wenn diese übereinstimmen (teilweise über Regex), mache ich einen Y-mal-X-Plot. -- das ist in Ordnung.
Die einzelnen bivariaten Diagramme werden gefüllt, aber nicht an das Journal angehängt. 
- Ich kann es manuell machen, aber es gibt sehr viele Plots (in der Größenordnung von 100 bis 1000)
- Es wurde versucht, Teile anderer Beispiele nachzuahmen, in denen es zwei Journale gibt (temp = xx und das Haupt-"Beispieljournal").
JSL - Hinzufügen einer Tabelle zu einem Journal
- Ich habe versucht, meine älteren Skripte anzusehen, wo dies funktioniert hat (in das Journal verschoben). Dennoch ist mir nicht klar, was ich vermisse.In solchen Fällen sollte dieser Teil des Codes wie unten aussehen, wobei newplot dem aktuellen Beispiel ähnlich ist
Current Journal( "Y_vs_X" );
Report( newplot ) << Journal( "Y_vs_X" );
Ich füge einen guten Teil des Skripts unten/im Anhang bei. Obwohl hier keine Parameter oder Datentabelle enthalten sind. Ich denke, ein Profi wird den Fehler schnell erkennen, damit ich es vermeiden kann, dies zu wiederholen, und ein besseres Verständnis habe.
//Match parameters that are common between set 1 and set 2 to do bivariate plot and push to journal
For( v = 1, v <= Count_set1, v++,
Titlex = Char( set1_list[v] );
If( Pat Match( Titlex, Regex( Titlex, "([\w.+])(.+)(\:)(.+)(\:)(.+)", "\1\2\3\4" ) ),
matchone = Regex( Titlex, "([\w.+])(.+)(\:)(.+)(\:)(.+)", "\1\2\3\4" ),
);
For( w = 1, w <= Count_set2, w++,
Titley = Char( set2_list[w] );
If( Pat Match( Titley, Regex( Titley, "([\w.+])(.+)(\:)(.+)(\:)(.+)", "\1\2\3\4" ) ),
matchtwo = Regex( Titley, "([\w.+])(.+)(\:)(.+)(\:)(.+)", "\1\2\3\4" ),
);
If(
matchone == matchtwo,
newplot = mydataTable << Bivariate(
X( :As name( Titlex ) ),
Y( :As name( Titley ) ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
Pen Color( "blue" );
Y Function( x, x );
), Grid Line Order( 1 ), Reference Line Order( 3 ), DispatchSeg(
TopSeg( 1 ),
{Set Script(
Pen Color( "blue" );
Y Function( x, x );
)}
)}
)
),
rep_plot = newplot << report;
invisible,
),
Wait( 0.01 ),
tmpjrnl = New Window( "temp_journal", <<journal );
rep_plot << journal;
hlb << append (tmpjrnl);
tmpjrnl << close window;
,
);,
);
);
Print( "This is the end, the script has finished running..." );
Eigentlich habe ich festgestellt, dass mein Fehler darin bestand, ein "," nach der Wait-Anweisung zu verwenden.
Ersetzen Sie es durch ein ";" und unten hat das Problem gelöst
Wait( 0.01 );
newjrnl << append(Report( current_plot_new ));