我之前忽略的一件事是通过选择要标记的行并转到“行”>“标记/取消标记”来为各个点添加标记。这应该使您能够在此图中执行您想要的操作。我基本上重新创建了您的示例(除了没有错误栏),但我不得不一次记录 1 个图,因为我需要更改每个面板的标签。
最终结果如下所示:

我附上了日志文件,但有一个令人沮丧的错误,即在保存并重新打开日志后自定义行设置变得混乱。当您打开它时,您可能会注意到所有的线条都是虚线。
数据表脚本(同样,不能直接附上数据表):
New Table( "Multipanel Example with Tukey labels",
Add Rows( 4 ),
Set Header Height( 59 ),
New Script(
"Growth",
Graph Builder(
Size( 518, 446 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Treatment ),
Y( :Growth ),
Overlay( :Temperature Regime )
),
Elements(
Line( X, Y, Legend( 10 ) ),
Points( X, Y, Legend( 11 ), Jitter( "None" ) )
),
SendToReport(
Dispatch(
{},
"Growth",
ScaleBox,
{Format( "Fixed Dec", 12, 1 ), Min( 0.4 ), Max( 0.9 ),
Inc( 0.1 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
10,
Properties(
0,
{Line Color( 0 ), Line Style( "Dotted" ),
Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
), Legend Model(
11,
Properties(
0,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} )
)
)
),
New Script(
"chlorophyll",
Graph Builder(
Size( 518, 446 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Treatment ),
Y( :chlorophyll a ),
Overlay( :Temperature Regime )
),
Elements(
Points( X, Y, Legend( 6 ), Jitter( "None" ) ),
Line( X, Y, Legend( 7 ) )
),
SendToReport(
Dispatch(
{},
"chlorophyll a",
ScaleBox,
{Format( "Fixed Dec", Use thousands separator( 1 ), 12, 0 ),
Min( 0 ), Max( 8 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
6,
Properties(
0,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
), Legend Model(
7,
Properties(
0,
{Line Color( 0 ), Line Style( "Dotted" ),
Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg(
Marker Seg( "Marker (1)" ),
label offset( {0, -8, -13}, {1, -12, 26} )
), DispatchSeg(
Marker Seg( "Marker (2)" ),
label offset( {0, -5, 21}, {1, -14, -16} )
)}
)
)
)
),
New Script(
"Symbiodinium density",
Graph Builder(
Size( 518, 446 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Treatment ),
Y( :Symbiodinium density ),
Overlay( :Temperature Regime )
),
Elements(
Points( X, Y, Legend( 4 ), Jitter( "None" ) ),
Line( X, Y, Legend( 5 ) )
),
SendToReport(
Dispatch(
{},
"Symbiodinium density",
ScaleBox,
{Min( 1.5 ), Max( 4 ), Inc( 0.5 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Properties(
0,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
), Legend Model(
5,
Properties(
0,
{Line Color( 0 ), Line Style( "Dotted" ),
Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg(
Marker Seg( "Marker (1)" ),
label offset( {0, 2, 24}, {1, -3, -16} )
), DispatchSeg(
Marker Seg( "Marker (2)" ),
label offset( {0, 3, -15}, {1, 1, 24} )
)}
)
)
)
),
New Script(
"max dark-adapted",
Graph Builder(
Size( 518, 446 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Treatment ),
Y( :Name( "max. dark-adapted quantum yield" ) ),
Overlay( :Temperature Regime )
),
Elements(
Points( X, Y, Legend( 3 ), Jitter( "None" ) ),
Line( X, Y, Legend( 4 ) )
),
SendToReport(
Dispatch(
{},
"max. dark-adapted quantum yield",
ScaleBox,
{Min( 0.72 ), Max( 0.77 ), Inc( 0.01 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
3,
Properties(
0,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
), Legend Model(
4,
Properties(
0,
{Line Color( 0 ), Line Style( "Dotted" ),
Fill Color( 0 )},
Item ID( "1", 1 )
),
Properties(
1,
{Line Color( 0 ), Fill Color( 0 )},
Item ID( "2", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg(
Marker Seg( "Marker (1)" ),
label offset( {0, -4, -17}, {1, -6, -18} )
), DispatchSeg(
Marker Seg( "Marker (2)" ),
label offset( {0, -7, -14}, {1, -4, -17} )
)}
)
)
)
),
New Column( "Treatment",
Character,
"Nominal",
Set Property( "Value Ordering", {"upwelling", "non-upwelling"} ),
Set Values( {"upwelling", "upwelling", "non-upwelling", "non-upwelling"} ),
Set Display Width( 132 )
),
New Column( "Temperature Regime",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 2, 1, 2] )
),
New Column( "Growth",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.78, 0.75, 0.68, 0.82] )
),
New Column( "Symbiodinium density",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2.8, 3.05, 3.45, 3.38] )
),
New Column( "Tukey Symbiodinium",
Character,
"Nominal",
Set Values( {"B", "B", "A", "A"} )
),
New Column( "chlorophyll a",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7.2, 4.3, 5.5, 6.5] )
),
New Column( "Tukey chlorophyll",
Character,
"Nominal",
Set Values( {"A", "C", "BC", "AB"} )
),
New Column( "max. dark-adapted quantum yield",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.76, 0.749, 0.753, 0.739] ),
Set Display Width( 148 )
),
New Column( "Tukey max",
Character,
"Nominal",
Set Values( {"A", "B", "B", "C"} )
),
Set Row States( [32776, 248, 32776, 248] ),
Set Label Columns( :Tukey max )
)我认为这无需太多工作和脚本即可实现。基本思想是从您的 Tukey 连接字母报告创建一个数据表,并将这些字母连接到您的原始数据,将组名称匹配到 Tukey 表中的级别列。然后,将列与字母组组合在一起,方法是选择它们 > 右键单击任何突出显示的列 > 新建公式列 > 连接(使用空格或逗号)。接下来,选择生成的列并将其用于标签(列 > 标签/取消标签)。
最后,在 Graph Builder 中绘制图表。在我制作了条形图之后,我可以添加误差条和标签,正如您使用条形图的控制面板控件所示。
**社区不允许我发布表格(“附件的内容与其文件类型不匹配”)。这是重现它的脚本:
New Table( "ExamplePlotTukeyLabels",
Add Rows( 17 ),
New Script(
"Source",
Data Table( "Untitled 4" ) << Join(
With( Data Table( "Untitled 6" ) ),
By Matching Columns( :Groups = :Level ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
)
),
New Script(
"Make Into Data Table",
Names Default To Here( 1 );
platform = Current Data Table() << Oneway(
Y( :Y ),
X( :Groups ),
All Pairs( 1 )
);
Wait( 0 );
Report( platform )[Outline Box( "Oneway Analysis of Y By Groups" )][
Outline Box( "Means Comparisons" )][
Outline Box( "Comparisons for all pairs using Tukey-Kramer HSD" )][
Outline Box( "Connecting Letters Report" )][Table Box( 1 )] <<
Make Into Data Table;
Report( platform ) << Close Window;
),
New Script(
"Example with Tukey Levels",
Graph Builder(
Size( 518, 550 ),
Show Control Panel( 0 ),
Variables( X( :Groups ), Y( :Y ) ),
Elements(
Bar(
X,
Y,
Legend( 4 ),
Error Bars( "Standard Error" ),
Label( "Label by Row" )
)
)
)
),
New Column( "Groups",
Character,
"Nominal",
Set Values(
{"Group 1", "Group 1", "Group 1", "Group 1", "Group 1", "Group 2",
"Group 2", "Group 2", "Group 2", "Group 2", "Group 3", "Group 3",
"Group 3", "Group 3", "Group 3", "Group 4", "Group 4"}
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Random Normal( 15, 3 ) + Col Mean( Random Normal( 0, 10 ), :Groups )
),
Suppress Eval
),
New Column( "Level",
Character,
"Nominal",
Set Values(
{"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C",
"C", "D", "D"}
)
),
New Column( "~Letter Column A",
Character,
"Nominal",
Set Values(
{"", "", "", "", "", "A", "A", "A", "A", "A", "", "", "", "", "", "A",
"A"}
)
),
New Column( "~Letter Column B",
Character,
"Nominal",
Set Values(
{"B", "B", "B", "B", "B", "", "", "", "", "", "B", "B", "B", "B", "B",
"B", "B"}
)
),
New Column( "Concatenate[~Le...etter Column B]",
Character,
"Nominal",
Formula( :Name( "~Letter Column A" ) || " " || :Name( "~Letter Column B" ) )
),
New Column( "Mean",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 6 ),
Set Values(
[12.8498772929854, 12.8498772929854, 12.8498772929854, 12.8498772929854,
12.8498772929854, 19.105279210907, 19.105279210907, 19.105279210907,
19.105279210907, 19.105279210907, 11.7021088825322, 11.7021088825322,
11.7021088825322, 11.7021088825322, 11.7021088825322, 16.4722902997683,
16.4722902997683]
)
),
Set Label Columns( :Name( "Concatenate[~Le...etter Column B]" ) )
)