Hi,
Ich bin bei einem Problem hängengeblieben und wäre für einen Rat dankbar:
Wir analysieren Proben und erhalten Population A, B, C, D und E für jede Probe.
Die Informationen für A können in "%" und "Anzahl" unterteilt werden, ebenso für B, C, D und E.
Wir importieren die Daten und die Spalten mit den Namen "A 1" bis "E 1" stellen die "%"-Werte dar, die mit "A 2" bis "E 2" bezeichneten die "Count"-Werte.
Da der Import immer gleich sein wird, war das Schreiben eines Skripts zum Generieren von Diagrammen mit 2 Y-Achsen ("%" und "Anzahl") für jeden Bevölkerungstyp (A, B, C usw.) überschaubar. Siehe Code unten.
Das Problem: Manchmal erhalten wir für einige unserer Populationen eine zusätzliche Anzeige. Beispielsweise haben nur Population B und E eine dritte Information, die "Fluoreszenz" genannt wird. Diese werden als Spalten „B 3“ und „E 3“ in dieselbe Tabelle importiert.
Da diese Populationen von Import zu Import variieren können, muss ich ein Skript schreiben, das "B 3" als Mitglied der "B"s identifizieren kann und eine dritte Y-Achse im Diagramm der Population "B" (und der dasselbe für "E 3" in diesem Beispiel). Aber dafür bin ich nicht schlau/erfahren genug.
Natürlich habe ich versucht, die Tabelle neu anzuordnen, neue Zeilen statt neuer Spalten zu erstellen und mit "wrap" zu arbeiten. Aber dort haben wir keine Autoskalierung für jede Y-Achse. Versuchte auch ein assoziiertes Array für die drei Informationstypen, scheiterte jedoch an mangelnder Programmiererfahrung.
Vielleicht hat einer von euch eine Idee, das könnte hilfreich sein, danke
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;
);