Bonjour à tous,
Je suis bloqué sur un problème et je vous serais reconnaissant d'avoir quelques conseils :
Nous analysons des échantillons et obtenons la population A, B, C, D et E pour chaque échantillon.
Les informations pour A peuvent être divisées en "%" et "count", de même pour B, C, D et E.
Nous importons les données et les colonnes nommées "A 1" à "E 1" représentent les valeurs "%", celles appelées "A 2" à "E 2" représentent les valeurs "Count".
Puisque l'import sera toujours le même, écrire un script pour générer des graphiques avec 2 axes Y ("%" et "count") pour chaque type de population (A, B, C etc.) était gérable. Voir le code ci-dessous.
Le problème: Parfois, nous obtenons une lecture supplémentaire pour certaines de nos populations. Par exemple, seules les populations B et E auront une troisième information appelée "fluorescence". Ceux-ci seront importés en tant que colonnes "B 3" et "E 3" dans le même tableau.
Étant donné que ces populations peuvent varier d'une importation à l'autre, j'ai besoin d'écrire un script capable d'identifier "B 3" en tant que membre des "B" et de créer un 3ème axe Y dans le graphique de population "B" (et le idem pour "E 3" dans cet exemple). Mais pour cela, je ne suis pas assez intelligent/expérimenté.
Bien sûr, j'ai essayé de réorganiser le tableau, de créer de nouvelles lignes au lieu de nouvelles colonnes et de travailler avec "wrap". Mais là, nous n'avons pas d'échelle automatique pour chaque axe Y. A également essayé un tableau associé pour les trois types d'informations, mais a échoué en raison du manque d'expérience de codage.
Peut-être que l'un d'entre vous a une idée, ça pourrait être utile, merci
Names Default To Here( 1 );
dt = Current Data Table();
dt << clear select;
win = New Window( "Test", Outline Box( "", hb = V List Box() ) );
loopstart = Contains(dt << get column names, Column("A 1"));
loopend = (Contains(dt << get column names, Column("A 2")))-1;
icounts = (loopend+1)-loopstart;
For( i = loopstart, i <= loopend, i++,
gb = Graph Builder(
Size( 1500, 900 ),
Show Control Panel( 0 ),
Grid Color( "Black" ),
Graph Spacing( 2 ),
Legend Position( "Bottom" ),
Variables( X( :Group ), Y( Eval( i ) ), Y( Eval( i + icounts ) ), Color( :Subjects ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 11 ) ), Box Plot( X, Y, Legend( 13 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 12 ) ), Box Plot( X, Y, Legend( 14 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "DATA" ), Image Export Display( Normal )} ),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Title" )}, {Set Font Size( 16 )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Font Size( 14 ), Set Font Style( "bold" ), Set Text( " [%]" )} ),
Dispatch( {}, "Y1 title", TextEditBox, {Set Font Size( 14 ), Set Font Style( "bold" ), Set Text( " Count" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Font Size( 14 ), Set Font Style( "bold" )} ),
Dispatch(
{},
"400",
LegendBox,
{Set wrap( 12 ), Set Title( "" ), font( "Segoe UI", 12, "Plain" ), Legend Position(
{11, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1], 13, [-1], 12, [-1], 14, [-1]
}
), Orientation( "Vertical" )}
)
)
);
hb << Append( Report( gb ) << child );
hb << append( Page Break Box() );
gb << close window;
);