J'ai une idée de ce qu'il faudrait faire, mais je ne sais pas comment le mettre en œuvre. J'ai un petit exemple de tableau (disons) comme celui-ci (montrant juste 4 lignes)
dt
Groupe Paramètre Valeur Classe PhaseLabel Date
A X 2 pq z xxxxx
A Y 6 re z xxxxx
A R 2.6 uy u aaaaa
B X 4 yt z qqqqq
B R 3 er s rrrrrrr
.................................................. ...............
Je souhaite donc créer jrn-> html pour chacun de mes groupes (fichiers html distincts). Dans chaque fichier html, il y aura des tracés qui seront ajoutés à l'aide d'une V List Box. Cependant, le problème est que j'ai besoin d'avoir un côte à côte (un tableau bivarié et un tableau de variabilité)
Je suis capable de produire un graphique bivarié ou variable, mais je ne peux pas faire les deux. Je mets le squelette du code ci-dessous:
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
Maintenant, le code ci-dessus fonctionne parfaitement lorsque je veux avoir 1 journal pour chaque groupe qui trace un Bivariate (illustré ici) ou si je veux un Var Chart (si je remplace simplement Bivariate par var Chart en fonction de Class & Phase Label ). Cependant, ce que je veux, c'est à l'intérieur de chaque groupe (première boucle pour chaque paramètre (à l'intérieur de la 2ème boucle) le graphique bivarié et var côte à côte. Cela signifie donc que si j'ai 4 groupes, je devrais avoir 4 revues (fichier html) et si pour chaque groupe, je dis que j'ai 5 paramètres, alors sur chaque fichier html, j'aurai un total de 10 tracés dans 2 colonnes (la 1ère colonne dit Bivariate et 2nd Colonne dire Var Chart) . J'essayais d'utiliser H Box dans la 2e boucle for et d'essayer d'ajouter les deux tracés, mais cela ne fonctionnait pas.
J'apprécierai vraiment l'aide. Si d'autres informations sont nécessaires, je peux les fournir.
J'ai un peu retravaillé votre script.Vous aurez besoin de passer par là une étude de ce que j'ai fait.Le problème de base est que lorsque vous utilisez un BY() sur les plates-formes, il génère un rapport distinct pour chaque niveau de by.
Le script tel qu'il est écrit générera les journaux pour chaque groupe.J'ai commenté la fenêtre d'affichage et l'enregistrement du journal en html.Je l'ai fait, donc pour commencer, vous verrez les différents journaux.Il vous suffit de supprimer les commentaires et cela devrait fonctionner comme vous le souhaitez.
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>
Le script a fonctionné sans erreur sur vos exemples de données fournis.