Ho un'idea di cosa potrebbe essere necessario fare, ma non so come implementarla. Ho una piccola tabella di esempio (diciamo) come questa (che mostra solo 4 righe)
dt
Gruppo Parametro Valore Classe FaseEtichetta Data
AX 2 pq z xxxxx
AY 6 re z xxxxx
AR 2.6 uy u yyyyy
BX 4 yt z qqqqq
BR 3 è rrrrrrr
.................................................... ..............
Quindi voglio creare jrn->html per ognuno dei miei gruppi (file html distinti). In ogni file html ci saranno grafici che saranno aggiunti usando una V List Box. Tuttavia, il problema è che ho bisogno di avere un grafico affiancato (un grafico bivariato e uno di variabilità)
Sono in grado di produrre un grafico bivariato o variabile, ma non posso fare entrambi. Ho messo lo scheletro del codice qui sotto:
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
Ora il codice sopra funziona perfettamente quando voglio avere 1 journal per ogni gruppo che traccia un grafico bivariato (mostrato qui) o se voglio un grafico Var (se sostituisco semplicemente Bivariato con il grafico var come funzione di Classe ed Etichetta di Fase). Tuttavia, ciò che voglio è all'interno di ogni gruppo (primo ciclo for per ogni parametro (all'interno del 2° ciclo) il grafico bivariato e var affiancati. Quindi, diciamo che se ho 4 gruppi, dovrei avere 4 journal (file html) e se per ogni gruppo, diciamo, ho 5 parametri, allora su ogni file html avrò un totale di 10 grafici in 2 colonne (la 1° colonna dice Bivariato e la 2° colonna dice Grafico Var). Stavo provando a usare H Box all'interno del 2° ciclo for e provando ad aggiungere i due grafici, ma non funziona.
Apprezzerei molto il tuo aiuto. Se hai bisogno di altre informazioni, posso fornirle.
Ho rielaborato un po' la tua sceneggiatura.Dovrai esaminarlo e studiare quello che ho fatto.Il problema di base è che quando usi un BY() sulle piattaforme, genera un report separato per ogni livello di by.
Lo script come scritto genererà i diari per ogni gruppo.Ho commentato la finestra dello spettacolo e il salvataggio del diario in html.L'ho fatto, quindi per cominciare vedrai i diversi diari.Devi solo eliminare i commenti e dovrebbe funzionare come desideri.
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>
Lo script ha funzionato senza errori sui dati di esempio forniti.