Ich habe eine Idee, was getan werden muss, bin mir aber nicht sicher, wie ich es umsetzen soll. Ich habe eine kleine Beispieltabelle (sagen wir) wie diese (zeigt nur 4 Zeilen)
dt
Gruppe Parameter Wert Klasse PhaseLabel Datum
AX 2 pq z xxxxx
AY 6 zu z xxxxx
AR 2.6 uy u jjjjj
BX 4 yt z qqqqq
BR 3 ist rrrrrrr
................................................. ...............
Ich möchte also für jede meiner Gruppen jrn->html erstellen (unterschiedliche HTML-Dateien). In jeder HTML-Datei gibt es Diagramme, die mithilfe einer V-Liste angehängt werden. Das Problem besteht jedoch darin, dass ich ein Diagramm nebeneinander haben muss (ein bivariates und ein Variabilitätsdiagramm).
Ich kann entweder ein bivariates oder ein variables Diagramm erstellen, aber nicht beides. Ich habe das Grundgerüst des Codes unten eingefügt:
dt = Current Data Table();
out_path = "*****"
Summarize( groupid = by(:Group));
Summarize(paramgrp = by(:Parameter));
mydf = {};
For (k=1, k<=N items(groupid),k++,
grp_name = groupid[k];
myhtm = New Window( "30d Trend Plots Group Wise", myhtm[k] = V List Box() );
For( i = 1, i <= N Items( paramgroup ), i++,
idname = Char( paramgroup[i] );
outfile = out_path || grp_name || "_" || "trend_plots" || ".html";
df_ooc = dt_month << Bivariate(
Y( :Value),
X( :DATE),
Where( :Parameter == idname),
Where (:Group == groupname),
By(:Group :Parameter),
);
mydf[k] << append( Report( myhtm))
); ///// 2nd for loop end
jrn_df = New Window("Trend Correlation Report", << Journal) ;
mydf[k] << Journal(Freeze All) << show window(0);
jrn_df << Save HTML(outfile);
Close All (Journals, "No Save");
); 1st for loop end
Nun funktioniert der obige Code einwandfrei, wenn ich 1 Journal für jede Gruppe haben möchte, das entweder ein bivariates Diagramm darstellt (hier gezeigt) oder wenn ich ein Var-Diagramm möchte (wenn ich einfach Bivariate durch Var-Diagramm als Funktion der Klassen- und Phasenbezeichnung ersetze). Was ich jedoch möchte, ist innerhalb jeder Gruppe (erste For-Schleife für jeden Parameter (innerhalb der 2. Schleife) das bivariate und das var-Diagramm nebeneinander. Das heißt also, wenn ich beispielsweise 4 Gruppen habe, dann sollte ich 4 Journale (HTML-Datei) haben, und wenn ich für jede Gruppe beispielsweise 5 Parameter habe, dann werde ich in jeder HTML-Datei insgesamt 10 Diagramme in 2 Spalten haben (1. Spalte sagt Bivariate und 2. Spalte sagt Var-Diagramm). Ich habe versucht, H Box innerhalb der 2. For-Schleife zu verwenden und die beiden Diagramme anzuhängen, aber es funktioniert nicht.
Ich wäre Ihnen sehr dankbar für Ihre Hilfe. Wenn Sie weitere Informationen benötigen, kann ich diese bereitstellen.
Ich habe dein Skript etwas überarbeitet.Sie müssen es durchgehen und studieren, was ich getan habe.Das grundlegende Problem ist, dass bei Verwendung von BY() auf den Plattformen ein separater Bericht für jede Ebene von by generiert wird.
Das geschriebene Skript generiert die Journale für jede Gruppe.Ich habe das Show-Fenster und das Speichern des Journals in html auskommentiert.Ich habe dies getan, also werden Sie zunächst die verschiedenen Zeitschriften sehen.Sie müssen nur die Kommentare entfernen, und es sollte so funktionieren, wie Sie es möchten.
Names Default To Here( 1 );
dt = Current Data Table();
out_path = "*****";
Summarize( groupid = by( :Group ) );
Summarize( paramgroup = by( :Parameter ) );
mydf = {};
For( k = 1, k <= N Items( groupid ), k++,
grp_name = groupid[k];
myhtm = New Window( "30d Trend Plots Group Wise", lb = Lineup Box( N Col( 2 ) ) );
For( i = 1, i <= N Items( paramgroup ), i++,
idname = Char( paramgroup[i] );
outfile = out_path || grp_name || "_" || "trend_plots" || ".html";
df_ooc = dt << Bivariate(invisible,
Y( :Value ),
X( :DATE ),
Where( :group == grp_name ),
By( :Parameter ),
);
vc = Variability Chart(invisible,
Y( :Value ),
X( :Date ),
Std Dev Chart( 0 ),
where( :group==grp_name ),
By( :parameter )
);
// For each value in the By group, there is a separate report
theEnd=.;
try(theEnd=nitems(df_ooc)); if(ismissing(theEnd), theEnd=1);
For( rptGroup = 1, rptGroup <= theEnd, rptGroup++,
IF( theEnd == 1,
lb << append( Report( df_ooc ) );
lb << append( Report( vc ) );
,
lb << append( Report( df_ooc[rptGroup] ) );
lb << append( Report( vc[rptGroup] ) );
);
);
df_ooc << close window;
vc << close window;
); ///// 2nd for loop end
jrn_df = New Window( "Trend Correlation Report", <<JOURNAL></JOURNAL>
Das Skript hat mit Ihren gelieferten Beispieldaten fehlerfrei funktioniert.