你好呀,
我遇到了一个问题,非常感谢您提供一些建议:
我们分析样本并获得每个样本的总体 A、B、C、D 和 E。
A的信息可以分为“%”和“count”,B、C、D、E也一样。
我们导入数据,名为“A 1”到“E 1”的列代表“%”值,名为“A 2”到“E 2”的列代表“计数”值。
由于导入总是相同的,因此编写一个脚本来为每种人口类型(A、B、C 等)生成具有 2 个 Y 轴(“%”和“计数”)的图表是易于管理的。 请参阅下面的代码。
问题:有时我们会为我们的一些人群获得额外的读数。 例如,只有人口 B 和 E 会有称为“荧光”的第三种信息。 这些将作为列“B 3”和“E 3”导入到同一个表中。
由于这些人口可能因进口而异,我需要编写一个脚本,能够将“B 3”识别为“B”的成员,并在人口“B”图中创建第三个 Y 轴(以及本例中的“E 3”相同)。 但是为此我不够聪明/经验不足。
当然,我尝试重新排列表格,创建新行而不是新列并使用“换行”。 但是我们没有为每个 Y 轴自动缩放。 还尝试了三种信息类型的关联数组,但由于缺乏编码经验而失败。
也许你们中的一个人有一个想法,这可能会有所帮助,谢谢
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;
);