Hola,
Me quedé atascado en un problema y agradecería algunos consejos:
Analizamos muestras y obtenemos la población A, B, C, D y E para cada muestra.
La información para A se puede dividir en "%" y "recuento", lo mismo para B, C, D y E.
Importamos los datos y las columnas llamadas "A 1" a "E 1" representan los valores "%", las llamadas "A 2" a "E 2" representan los valores "Count".
Dado que la importación siempre será la misma, fue manejable escribir un script para generar gráficos con 2 ejes Y ("%" y "recuento") para cada tipo de población (A, B, C, etc.). Vea el código a continuación.
El problema: A veces obtenemos una lectura adicional para algunas de nuestras poblaciones. Por ejemplo, solo la población B y E tendrán una tercera información llamada "fluorescencia". Estos se importarán como columnas "B 3" y "E 3" en la misma tabla.
Dado que estas poblaciones pueden variar de una importación a otra, necesito escribir un script que pueda identificar "B 3" como miembro de las "B" y crear un tercer eje Y en el gráfico de población "B" (y el mismo para "E 3" en este ejemplo). Pero para esto no soy lo suficientemente inteligente/experimentado.
Por supuesto, traté de reorganizar la tabla, crear nuevas filas en lugar de nuevas columnas y trabajar con "envoltura". Pero allí no tenemos escala automática para cada eje Y. También probé una matriz asociada para los tres tipos de información pero falló debido a la falta de experiencia en codificación.
Tal vez uno de ustedes tiene una idea, que podría ser útil, gracias
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;
);