跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
MalacoKnowledge
搜索
搜索
登录
个人工具
登录
查看“模板:Clade/doc”的源代码
模板
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
←
模板:Clade/doc
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Documentation subpage}} {{High-use|6000}} {{Lua|Module:Clade}} {{Uses TemplateStyles|Template:Clade/styles.css}} <!--- PLEASE ADD METADATA TO THE <includeonly> SECTION AT THE END OF THIS PAGE --> This template is used for drawing branching trees with the node and base labels being clickable links. Such diagrams are especially suited to represent evolutionary trees ([[cladogram]]s). ==Basic features== ===Usage=== <syntaxhighlight lang="wikitext"> {{clade |label1=Base |1=Node }} </syntaxhighlight> produces {{clade |label1=Base |1=Node }} <syntaxhighlight lang="wikitext"> {{clade |1={{clade |label1=[[Subtree1]] |1=Leaf1 |label2=Subtree2 |2=[[Leaf2]] }} }} </syntaxhighlight> produces {{clade |1={{clade |label1=[[Subtree1]] |1=Leaf1 |label2=Subtree2 |2=[[Leaf2]] }} }} <syntaxhighlight lang="wikitext"> {{clade |1={{clade |label1=Subtree1 |1=Leaf1 |label2=Subtree2 |2=Leaf2 }} }} </syntaxhighlight> produces {{clade |1={{clade |label1=Subtree1 |1=Leaf1 |label2=Subtree2 |2=Leaf2 }} }} Note that the order of the parameters does not matter. Exactly the same output is produced by <syntaxhighlight lang="wikitext"> {{clade |1={{clade |2=Leaf2 |1=Leaf1 |label1=Subtree1 |label2=Subtree2 }} }} </syntaxhighlight> {{clade |1={{clade |1=Leaf1 |2=Leaf2 |label2=Subtree2 |label1=Subtree1 }} }} ===Technical background=== The clade template has many features for customising the appearance. Using them optimally requires some understanding of how the template works. The cladogram is constructed using nested HTML tables and the lines of the cladogram are borders of the cells (<code><nowiki><td></nowiki></code> tags). Each clade template creates an HTML table with the elements show as follows: {| class="wikitable" ! Description ! Table cell structure ! Cladogram ! Code using clade template |- | style="width:20%;" |<p>A simple clade structure with a single child node (or leaf).</p><p>This is an HTML table with two rows and two columns. The cells of the righthand column are merged using the rowspan attribute.</p> |style="padding:50px" | {| style="line-height:100%;border:1px dotted red;margin:1px;" |- | style="border:1px dotted green;border-bottom:3px solid black;text-align:center;" | labelA | rowspan=2 style="border:1px dotted green;padding:0.1em;" | Leaf A |- | style="border:1px dotted green;" | sublabelA |} |style="padding:20px" | {{clade |thickness=3 |label1=labelA |sublabel1=sublabelA |1=LeafA }} |style="padding:20px" |<syntaxhighlight lang="wikitext"> {{clade |thickness=3 |label1=labelA |sublabel1=sublabelA |1=LeafA }}</syntaxhighlight> |- | style="width:20%;" |<p>Replace LeafA with another clade structure.</p><p>A second HTML table is placed inside a the right-hand cell of the outer table.</p> |style="padding:50px" | {| style="line-height:100%;border:1px dotted red;margin:1px;" |- | style="border:1px dotted green;border-bottom:3px solid black;text-align:center;" | labelA | rowspan=2 style="border:1px dotted green;padding:0.1em;" | {| class="clade" style="line-height:100%;border:1px dotted red;margin:1px;" |- | style="border:1px dotted green;border-bottom:3px solid black;text-align:center;" | label1 | rowspan=2 style="border:1px dotted green;vertical-align:middle;padding:0 1em;" |leaf1 |- | style="border:1px dotted green;border-left:3px solid black;text-align:center;" | sublabel1 |- | style="border:1px dotted green;border-bottom:3px solid black;border-left:3px solid black;text-align:center;" | label2 | rowspan=2 style="border:1px dotted green;vertical-align:middle;padding:0 1em;" |leaf2 |- | style="border:1px dotted green;text-align:center;" | sublabel2 |} |- | style="border:1px dotted green;" | sublabelA |} |style="padding:20px" | {{clade |thickness=3 |label1=labelA |sublabel1=sublabelA |1={{clade |thickness=3 |label1=label1 |sublabel1=sublabel1 |1=leaf1 |label2=label2 |sublabel2=sublabel2 |2=leaf2 }} }} |style="padding:20px" |<syntaxhighlight lang="wikitext"> {{clade |thickness=3 |label1=labelA |sublabel1=sublabelA |1={{clade |thickness=3 |label1=label1 |sublabel1=sublabel1 |1=leaf1 |label2=label2 |sublabel2=sublabel2 |2=leaf2 }} }}</syntaxhighlight> |} ===Styling brackets and branches=== The appearance of the cladogram can be customised by changing the border attributes of the HTML cell elements, using the parameters {{para|state}}, {{para|color}} and {{para|thickness}} as shown below: {| class="wikitable" !Description !Template code !Resulting output |- | style="width:25%;vertical-align:top;" | '''Styling brackets''' The thickness, colour and state (solid, dashed, etc.) of bracket lines can be changed using the <code>thickness=</code>, <code>|color=</code> and <code>|state=</code> parameters. |<syntaxhighlight lang="wikitext"> {{clade |label1=Bracket styling |sublabel1=(no suffix) |style1x=background-color:#ffffee; |1={{Clade |label2=color |2={{Clade |color=red |1=A |2=B |3=C }} |label1=thickness |1={{Clade |thickness=3 |1=I |2=J |3=K }} |label3=state |3={{Clade |state=dashed |1=X |2=Y |3=Z }} }} }} </syntaxhighlight> | {{clade |label1=Bracket styling |sublabel1=(no suffix) |style1x=background-color:#ffffee; |1={{Clade |label2=color |2={{Clade |color=red |1=A |2=B |3=C }} |label1=thickness |1={{Clade |thickness=3 |1=I |2=J |3=K }} |label3=state |3={{Clade |state=dashed |1=X |2=Y |3=Z }} }} }} |- | style="width:25%;vertical-align:top;" |'''Styling individual branches''' The thickness, colour and state of individual branch lines can be changed using the <code>thicknessN=</code>, <code>|colorN=</code> and <code>|stateN=</code> parameters, where N is the number of the branch to be styled. |<syntaxhighlight lang="wikitext"> {{clade |label1=Branch styling |sublabel1=(append branch number) |style1x=background-color:#eeeeee; |1={{Clade |label2=colorN |2={{Clade |1=black (default) |color1=black |2=red |color2=red |3=blue |color3=blue |4= #00ff00 |color4=#00ff00 }} |label1=thicknessN |1={{Clade |1=1 (default) |thickness1=1 |2=2 |thickness2=2 |3=3 |thickness3=3 }} |label3=stateN |3={{Clade |1=solid (default) |state1=solid |2=dotted |state2=dotted |3=dashed |state3=dashed |4=none |state4=none |5=double |state5=double }} }} }} </syntaxhighlight> | {{clade |label1=Branch styling |sublabel1=(append branch number) |style1x=background-color:#eeeeee; |1={{Clade |label2=colorN |2={{Clade |1=black (default) |color1=black |2=red |color2=red |3=blue |color3=blue |4= #00ff00 |color4=#00ff00 }} |label1=thicknessN |1={{Clade |1=1 (default) |thickness1=1 |2=2 |thickness2=2 |3=3 |thickness3=3 }} |label3=stateN |3={{Clade |1=solid (default) |state1=solid |2=dotted |state2=dotted |3=dashed |state3=dashed |4=none |state4=none |5=double |state5=double }} }} }} |} ===Reverse clade=== The cladograms can also be generated right to left using {{tl|cladeR}}, as shown below. {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext">{{cladeR |reverse=yes |label1=''Panthera'' |1={{cladeR |1={{cladeR |1=snow leopard |2=tiger }} |2={{cladeR |1=jaguar |2={{cladeR |1=lion |2=leopard }} }} }} }}</syntaxhighlight> |output1={{cladeR |reverse=yes |label1=''Panthera'' |1={{cladeR |1={{cladeR |1=snow leopard |2=tiger }} |2={{cladeR |1=jaguar |2={{cladeR |1=lion |2=leopard }} }} }} }} }} While this has limited value in English Wikipedia, it can be useful for presenting alternative phylogenies, e.g. as in the following example: {| style="margin-left: auto; margin-right: auto; border: none;" |{{clade |label1=''Panthera'' |1={{clade |1={{clade |1=snow leopard |2=tiger }} |2={{clade |1=jaguar |2={{clade |1=lion |2=leopard }} }} }} }} | {{cladeR |label1=alternative topology |1={{cladeR |1={{cladeR |1={{cladeR |1= }} |2={{cladeR |1= }} }} |label2= |2={{cladeR |1={{cladeR |1= |2= }} |2={{cladeR |1= }} }} }} }} |} ==Data in Newick format== A common method of presenting phylogenetic data is to use the [[Newick format]]. Many published papers provide data in Newick format in their supplementary materials and several taxonomic and phyogenetic websites provide downloads (e.g. [[Open Tree of Life]]). These Newick strings can be used to generate cladograms in several ways. ===Newick strings as a resource=== Firstly, the [[Newick format]] data can be used to generate the clade structure markup using a text editor or one of several tools. {{clade gallery |align=right|cladogram1={{clade |1={{clade |1=a |2=b}} |2={{clade |1=c |2=d }} }} }} The phylogenetic tree shown to the right is represented by the following Newick and {{tl|Clade}} code * Newick format: <code>((a,b),(c,d))</code> * Clade code: <code><nowiki>{{clade |1={{clade |1=a |2=b}} |2={{clade |1=c |2=d }} }} }}</nowiki></code> The manual procedure for conversion in a text editor is # Replace "(" with <nowiki>"{{clade|"</nowiki> # Replace ")" with <nowiki>"}}"</nowiki> # Edit to replace commas with pipes and numbers # Edit clade labels if needed Fortunately, there are a number of methods for automating this task. # One method is to use the [[User:Jts1882/sandbox/templates/NewickConverter|NewickConverter]] template (see instructions therein). #Alternatively, one can easily generate required clade code by downloading the free Windows utility, 'Claded', via link at http://code.google.com/p/claded, 'Claded' allowing editing of Cladograms using a tree control. #Example of a Perl script to automate the conversion: :::<syntaxhighlight lang="perl"> use constant N=>"\n"; use constant T=>"\t"; my $tree='((a,b),(c,d));'; # get sequence $tree=~s/[\n\r]//g; # loose those spaces $tree=~ s/\:[\.\d]+//g; # loose those lengths while ($tree=~ m/\(/) { foreach my $clade ($tree=~ m/\(([^\(\)]+)\)/g) { my @branches=split /\,/,$clade; s/(\t+)/$1\t/g for @branches; die 'ERROR: degenerate/empty node!'.N if $#branches<1; $tree=~ s/\(\Q$clade\E\)/${\join('','{{clade',N,map(T.'|'.($_+1).'='.$branches[$_].N,0..$#branches),T.'}}')}/; # substitute } pos($tree)=0; } $tree=~s/(\t*)\t\}\}/$1\}\}/g; # lazy fix print $tree; </syntaxhighlight> ===Using Newick strings directly=== The Newick format data can also be added using the {{para|newickN}}, where N refers to the child node (as with other parameters). For instance, the following Newick string <syntaxhighlight lang="wikitext">((lion,jaguar,leopard),((siberian,bengal)tiger,snow leopard))panthera</syntaxhighlight> can be put in the clade code as in the following example: {{Clade example |align=center |description= |code= |output= |comment= |description1=Simple use of Newick strings |code1=<syntaxhighlight lang="wikitext">{{clade |label1=Label |1={{clade |label1=big cats |1={{clade |1=clouded leopards |style2=background-color:#ffdddd |newick2=((lion,jaguar,leopard),((siberian,bengal)tiger,snow leopard))panthera |2=Leaf B }} }} }}</syntaxhighlight> |output1={{clade |label1=big cats |1={{clade |1=clouded leopards |style2=background-color:#ffdddd |newick2=((lion,jaguar,leopard),((siberian,bengal)tiger,snow leopard))panthera |2=Leaf B }} }} |comment1= *Note that {{para|newick2}} causes {{para|2}} to be ignored. *The red shaded area shows the part of the cladogram generated from the Newick string }} The Newick format data provided [[Open Tree of Life]] and other sources typically has extraneous encoding data. This can be removed using the {{para|newickN-pattern}} and {{para|newickN-replace}} parameters which supply a Lua pattern (similar to Regex) and replacement. The following code uses Newick format data for the genus ''[[Prionailurus]]'' downloaded from using Open Tree of Life ([https://tree.opentreeoflife.org/opentree/argus/ottol@570215/Prionailurus source data]): <syntaxhighlight lang="wikitext">{{clade |newick1=(Prionailurus_planiceps_ott86166,(((Prionailurus_bengalensis_chinensis_ott198595,Prionailurus_bengalensis_euptilurus_ott547362,Prionailurus_bengalensis_bengalensis_ott5557509,Prionailurus_bengalensis_rabori_ott7067613)Prionailurus_bengalensis_ott280108,Prionailurus_iriomotensis_ott418475),Prionailurus_viverrinus_ott862641),Prionailurus_rubiginosus_ott507541)Prionailurus_ott570215 |newick1-pattern1=([%a_]*)_?(ott[%d]*) |newick1-replace1=''%1'' |newick1-pattern2=Prionailurus_ |newick1-replace2=P._ |newick1-pattern3=bengalensis_ |newick1-replace3=b._ }} }}</syntaxhighlight> produces {{clade |1={{clade |newick1=(Prionailurus_planiceps_ott86166,(((Prionailurus_bengalensis_chinensis_ott198595,Prionailurus_bengalensis_euptilurus_ott547362,Prionailurus_bengalensis_bengalensis_ott5557509,Prionailurus_bengalensis_rabori_ott7067613)Prionailurus_bengalensis_ott280108,Prionailurus_iriomotensis_ott418475),Prionailurus_viverrinus_ott862641),Prionailurus_rubiginosus_ott507541)Prionailurus_ott570215 |newick1-pattern=([%a_]*)_([s?p?%.?_%u%d]*)_?(ott[%d]*) |newick1-replace=''%1'' %2 |newick1-pattern2=Prionailurus_ |newick1-replace2=P._ |newick1-pattern3=bengalensis_ |newick1-replace3=b._ }} }} ==Using a box== You can nest the templates and use links around the text. You may use non-breaking spaces (&nbsp;) to obtain spaces or to have labels that have spaces. The entire cladogram can be placed in a box so that text flows nicely around it. You can use {{tl|Cladogram}} to produce the box. {{cladogram|title=Example |caption=Sample of {{tl|Cladogram}} |clades={{clade| style=font-size:75%;line-height:75%; |label1=[[Neornithes]] |1={{clade |label1=[[Paleognathae]] |1= |label2= [[Neognathae]] |2={{clade |1=Other birds |label1= |label2=[[Galloanserae]] |2={{clade |1=[[Anseriformes]] |label2= |2={{clade |1=[[Galliformes]] |2=[[Craciformes]] }} }} }} }} }} }} <syntaxhighlight lang="wikitext"> {{cladogram|title=Example |caption=Sample of {{tl|Cladogram}} |clades={{clade| style=font-size:75%;line-height:75%; |label1=[[Neornithes]] |1={{clade |label1=[[Paleognathae]] |1= |label2= [[Neognathae]] |2={{clade |1=Other birds |label1= |label2=[[Galloanserae]] |2={{clade |1=[[Anseriformes]] |label2= |2={{clade |1=[[Galliformes]] |2=[[Craciformes]] }} }} }} }} }} }} </syntaxhighlight> ==Controlling the layout of sisters== When one sister is represented as a leaf node and the other as a labelled subclade, they do not appear to be at the same level. Consider this cladogram: {{clade |1={{clade |1=[[Banksia subser. Sphaerocarpae|''Banksia'' subser. ''Sphaerocarpae'']] (5 taxa) |label2=[[Banksia subser. Leptophyllae|''Banksia'' subser. ''Leptophyllae'']] |2={{clade |1=''[[Banksia telmatiaea]]'' |2=(4 other taxa) }} }} }} Although ''Banksia'' subser. ''Sphaerocarpae'' and ''Banksia'' subser. ''Leptophyllae'' are sisters, their names are not aligned in the cladogram. If this is considered undesirable, one solution is to use a label in both cases, as shown hereafter, which now shows the sisters at the same level. {{clade |1={{clade |label1=[[Banksia subser. Sphaerocarpae|''Banksia'' subser. ''Sphaerocarpae'']]<!--added label, moved from leaf below--> |1=(5 taxa) |label2=[[Banksia subser. Leptophyllae|''Banksia'' subser. ''Leptophyllae'']] |2={{clade |1=''[[Banksia telmatiaea]]'' |2=(4 other taxa) }} }} }} Another 'trick' is to introduce a dummy clade. The red line in the following example shows where an extra clade has been inserted: {{clade |1={{clade |1=[[Banksia subser. Sphaerocarpae|''Banksia'' subser. ''Sphaerocarpae'']] (5 taxa) |color2=red |2={{clade<!--dummy--> |label1=[[Banksia subser. Leptophyllae|''Banksia'' subser. ''Leptophyllae'']]<!--moved from 2 to 1 in new clade--> |1={{clade |1=''[[Banksia telmatiaea]]'' |2=(4 other taxa) }} }} }} }} To achieve this, instead of <syntaxhighlight lang="wikitext"> {{clade |1=Sister1 |label2=Sister2 |2={{clade |1=taxon1 |2=taxon2}} }} </syntaxhighlight> which displays as: {{clade |1=Sister1 |label2=Sister2 |2={{clade |1=taxon1 |2=taxon2}} }} use <syntaxhighlight lang="wikitext"> {{clade |1=Sister1 |2={{clade <!--extra dummy clade--> |label1=Sister2 |1={{clade |1=taxon1 |2=taxon2 }} }} }} </syntaxhighlight> which displays as: {{clade |1=Sister1 |2={{clade <!--extra dummy clade--> |label1=Sister2 |1={{clade |1=taxon1 |2=taxon2 }} }} }} ==Bracketting and labelling nodes== ===Adding vertical bars and brackets=== To insert a coloured 'bracket' around a set of leaf nodes which follow one another in the generated cladogram: * Add <code>barbeginN=''colour''</code> for the first leaf node, where N is the order of that leaf node within its clade, and ''colour'' is the required colour. * Add <code>barN=''colour''</code> for the remaining nodes other than the last (note that N must be the order of that node within its clade). * Add <code>barendN=''colour''</code> for the last node. {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext"> {{clade|style=font-size:85%;line-height:100%; |1={{clade |1=Leaf A |2=Leaf B|barbegin2=green |3=Leaf C|bar3=green |4={{clade |1=Leaf D|barend1=green |2=Leaf E |3=Leaf F|barbegin3=purple |4={{clade |1=Leaf G |bar1=purple |2=Leaf H |barend2=purple }} }} }} }} </syntaxhighlight> |output1=<div style="padding:6em;> {{clade|style=font-size:85%;line-height:100%; |1={{clade |1=Leaf A |2=Leaf B|barbegin2=green |3=Leaf C|bar3=green |4={{clade |1=Leaf D|barend1=green |2=Leaf E |3=Leaf F|barbegin3=purple |4={{clade |1=Leaf G |bar1=purple |2=Leaf H |barend2=purple }} }} }} }}</div> }} Note the using of the non-breaking space (<code> </code>) to move the vertical bar from the leaf text. The horizontal lines can be omitted by using <code>{{!}}barN=''colour''</code> throughout. Thus the following produces simple vertical bars: {{clade example |code=|output=|comment= |code1=<syntaxhighlight lang="wikitext"> {{clade|style=font-size:85%;line-height:100%; |1=Leaf A |2={{clade |1=Leaf B|bar1=midnightblue |2=Leaf C|bar2=midnightblue }} |3=Leaf D|bar3=midnightblue }} </syntaxhighlight> |output1=<div style="padding:6em;> {{clade|style=font-size:85%;line-height:100%; |1=Leaf A |2={{clade |1=Leaf B |bar1=midnightblue |2=Leaf C |bar2=midnightblue }} |3=Leaf D|bar3=midnightblue }} </div> |comment1= Note that brackets or bars cane be applied internal nodes as well as leaf nodes. So the following code produces the same result. <syntaxhighlight lang="wikitext"> {{clade|style=font-size:85%;line-height:100%; |1=Leaf A |bar2=midnightblue |2={{clade |1=Leaf B |2=Leaf C }} |3=Leaf D|bar3=midnightblue }} </syntaxhighlight> }} ===Specifying bracket colours=== You can use any of the ways in which colours can be specified in [[HTML]]; e.g. the standard [http://www.w3schools.com/html/html_colornames.asp colour names], the three or six hex digit notations, such as #FC3 or #F3C630, or the <code>rgb()</code> notation. ===Adding text labels to brackets=== Accessibility guidelines require pages not to rely on colour alone, so it's particularly important to add labels if you have more than one bracket/bar and need to refer to them separately. A couple of methods are available. # Text labels for each bracket/bar can be added using {{tl|Barlabel}} (see instructions at template page). # Use the {{para|grouplabelN}} parameter. This adds a label to the right of the righthand bracket or bar, as shown in the following example. The right hand column illustrates how {{para|grouplabel}} adds an HTML cell to the right of the terminal leaf. {{clade example |code=|output=|comment=Cell structure |code1=<syntaxhighlight lang="wikitext">{{clade |label1=labelA |grouplabel1=Grouplabel A |bar1=blue |1={{clade |label1=label1 |1= leaf1 |label2=label2 |2= leaf2 }} }}</syntaxhighlight> |output1={{clade |label1=labelA |sublabel1=sublabelA |grouplabel1=Grouplabel A |bar1=blue |1={{clade |label1=label1 |1= leaf1 |label2=label2 |2= leaf2 }} }} |comment1= {{{!}} style="line-height:100%;border:1px dotted red;margin:1px;" {{!}}- {{!}} style="border:1px dotted green;border-bottom:3px solid black;text-align:center;" {{!}} labelA {{!}} rowspan=2 style="border:1px dotted green;border-right:2px solid blue; padding:0.2em;" {{!}} {{{!}} class="clade" style="line-height:100%;border:1px dotted red;margin:1px;" {{!}}- {{!}} style="border:1px dotted green;border-bottom:3px solid black;" {{!}} label1 {{!}} rowspan=2 style="border:1px dotted green;vertical-align:middle;padding:0 1em;" {{!}}leaf1 {{!}}- {{!}} style="border:1px dotted green;border-left:3px solid black;" {{!}} {{!}}- {{!}} style="border:1px dotted green;border-bottom:3px solid black;border-left:3px solid black;" {{!}} label2 {{!}} rowspan=2 style="border:1px dotted green;vertical-align:middle;padding:0 1em;" {{!}}leaf2 {{!}}- {{!}} style="border:1px dotted green;" {{!}} {{!}}} {{!}} rowspan=2 style="border:1px dotted green;padding:0.2em;" {{!}} Grouplabel A {{!}}- {{!}} style="border:1px solid green;" {{!}} sublabelA {{!}}} }} In the example above grouplabel was used to label a bar marking the entire clade. It provided an alternative to labelA. However, if the bar is only applied to some terminals, {{para|grouplabelN}} can be used to mark paraphyletic groups. The following example also demonstrates the use of {{para|grouplabelstyleN}} to apply CSS styling to the grouplabel, in this case the color. {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext">{{clade |grouplabel1=ANA Group |grouplabelstyle1=color:green; |label1='''Angiosperms''' |1={{clade |1=[[Amborellales]] |barbegin1=green |2={{clade |1=[[Nymphaeales]] |bar1=green |2={{clade |1=[[Austrobaileyales]] |barend1=green |2=[[Mesangiosperms]] }} }} }} }} </syntaxhighlight> |output1={{clade |grouplabel1=ANA Group |grouplabelstyle1=color:green; |label1='''Angiosperms''' |1={{clade |1=[[Amborellales]] |barbegin1=green |2={{clade |1=[[Nymphaeales]] |bar1=green |2={{clade |1=[[Austrobaileyales]] |barend1=green |2=[[Mesangiosperms]] }} }} }} }} }} The {{para|grouplabel}} parameter can be used to add multiple labels with the aid of the {{tl|clade labels}} template. This template uses absolute CSS positioning to determine the placement of the label. When applied to a {{para|grouplabel1}} parameter on the outer clade it behaves very similarly to {{tl|barlabel}}. A simple example to label two groups is shown below: {{clade example|code=|output= |code1=<syntaxhighlight lang="wikitext">{{clade |label1=root |1={{clade |1=Leaf 1 |bar1=green |2={{clade |1=Leaf 2 |bar1=green |bar2=red |2={{clade |1=Leaf 3 |2=Leaf 4 }} }} }} |grouplabel1={{clade labels |width=10em; |label1=stem group |top1=20% |color1=green |label2=crown group |top2=70% |color2=red }} }} </syntaxhighlight> |output1={{clade |label1=root |1={{clade |1=Leaf 1 |bar1=green |2={{clade |1=Leaf 2 |bar1=green |bar2=red |2={{clade |1=Leaf 3 |2=Leaf 4 }} }} }} |grouplabel1={{clade labels |width=10em; |label1=stem group |top1=20% |color1=green |label2=crown group |top2=70% |color2=red }} }} }} The {{para|grouplabel}} parameter can contain any Wikitext or allowed HTML content and this offers a lot of flexibility in customising cladograms. The following example uses {{para|grouplabel}} to add an alternative topology using {{tl|cladeR}}: {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext">{{clade |label1=''Panthera'' |1={{clade |1={{clade |1=snow leopard |2=tiger }} |2={{clade |1=jaguar |2={{clade |1=lion |2=leopard }} }} }} |grouplabel1=<nowiki/>{{cladeR |label1= |1={{cladeR |1={{cladeR |1={{cladeR |1= }} |2={{cladeR |1= }} }} |label2= |2={{cladeR |1={{cladeR |1= |2= }} |2={{cladeR |1= }} }} }} }} }} }}</syntaxhighlight> |output1={{clade |label1=''Panthera'' |1={{clade |1={{clade |1=snow leopard |2=tiger }} |2={{clade |1=jaguar |2={{clade |1=lion |2=leopard }} }} }} |grouplabel1=<nowiki/>{{cladeR |label1= |1={{cladeR |1={{cladeR |1={{cladeR |1= }} |2={{cladeR |1= }} }} |label2= |2={{cladeR |1={{cladeR |1= |2= }} |2={{cladeR |1= }} }} }} }} }} }} ===Debugging=== If your cladogram doesn't display brackets/bars as you expected, check that: * You understand the numbering system for the parameters <code>barN</code>, etc. The N must be the same as the number of the child within its clade. Thus typically you should write <code>{{!}}N=''label for leaf''{{!}}barN=''colour for bar''</code>, e.g. <code>{{!}}2=<nowiki>[[Passeridae]]</nowiki>{{!}}bar2=midnightblue</code>. * You have only attempted to apply brackets/bars to ''leaf'' nodes. ==Limitations== ===Label length=== Labels produced by <code>|labelN=</code>, where <code>N</code> is 1, 2, ..., can lead to poor layout of the resulting cladogram. (This does not apply to the text of leaves, i.e. text produced by <code>|N=</code>.) To avoid problems: * Labels should be kept as short as possible, ideally a single word * Any necessary spaces in labels should be represented as &nbsp; not as actual spaces. * Line breaks (i.e. <nowiki><br/></nowiki>) should not be used. ===Browser differences=== [[File:Cladograms - browser variation.png|thumb|Browser variation: left – most browsers; right – Safari ]] Cladograms are drawn by generating hidden tables. The horizontal and vertical lines making up the tree are actually the edges of table cells. The tables are then drawn by the browser or user agent using its internal algorithms. As these differ from browser to browser, the trees produced will not look the same on all browsers. In particular, {{as of|2017|January|lc=yes}}, there are two algorithms for laying out tables with empty cells, used by two groups of browsers. Most browsers now use the algorithm that produces cladograms like the two on the left in the diagram. Safari (under both MacOS and iOS) uses another algorithm, producing cladograms like the two on the right in the diagram. No automated "fix" for these differences exists at present. If there is a choice over the ordering of the terminal nodes (leaves) of the tree, cladograms look best in a Safari-like browser if as much branching as possible is at the bottom of the cladogram. Typically this is produced by arranging the terminal nodes ''downwards'' on the page in order of their evolutionary divergence. Compare the bottom row of the diagram to the top row. ===Inclusion in books=== There are many known bugs in rendering tables in the software which produces [[Help:Books|Wikipedia books]]; see the [https://meta.wikimedia.org/wiki/Book_tool/Feedback book tool feedback page]. {{as of|2011|July|}} these result in the lines in cladograms not displaying in books. (Cladograms are implemented as HTML tables, which allows complex but hard-to-convert formatting. For an alternative way to include book cladograms, try images.) ===Large cladograms=== There are limitations on the size and complexity of the cladograms which can be drawn: * A maximum of 20 children is allowed per node. <!-- this is arbitrary and can be increased if required)--> {{clade gallery |vertical= |align=right |width=300px |footer1=Example exceeding the expansion depth on the twentieth nested clade template. |cladogram1={{clade |style=line-height:65%;font-size:65%; |1=1|2={{clade |1=2|2={{clade |1=3|2={{clade |1=4|2={{clade |1=5|2={{clade |1=6|2={{clade |1=7|2={{clade |1=8|2={{clade |1=9|2={{clade |1=10|2={{clade |1=11|2={{clade |1=12|2={{clade |1=13|2={{clade |1=14|2={{clade |1=15|2={{clade |1=16|2={{clade |1=17|2={{clade |1=18|2={{clade |1=19|2={{clade |1=20|2={{clade }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }} * The Wikimedia software has certain limits on the processing allowed by templates and modules. Large cladograms can potentially exceed some of these limits. ** Post-expand include size. Essentially this is the output of all templates, modules and parser calls. Pages with very large or several large cladograms will occasionally exceed this limit, especially on larger pages with many references and other demands on the system. ** Template expansion depth limit. When a template is used it adds to the expansion depth, once for the template expansion and once for parameter expansion. As a result, template calls can only be nested 20 deep. Because cladograms are built by nesting templates within each other this is a common problem on larger phylogenetic trees. Fortunately there are now ways around this problem (see following section ). ==Techniques for building large cladograms.== Because cladograms are build by nesting {{tl|clade}} templates within each other, larger cladograms can exceed the expansion depth allowed by the Wikimedia software. The cladogram on the right fails on the twentieth nested clade template. There are two methods to get around this limitation: * the use of the {{tl|clade sequential}} template and * the use of subtrees within the {{tl|clade}} template. ===Using sequential listing of taxa=== This approach uses the template {{tl|clade sequential}} to list taxa in a [[taxonomic sequence]]. In the following example six taxa are listed sequentially in the template and the cladogram has the first one as the first branch, the second next and so on until the final two are sisters. Because all taxa are added in one template call, this only counts once towards the 20 limit. The downside is that it is not possible to format each level independently. {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext">{{clade sequential |1=Leaf 1 |2=Leaf 2 |3=Leaf 3 |4=Leaf 4 |5=Leaf 5 |6=Leaf 6 }}</syntaxhighlight> |output1={{clade sequential |1=Leaf 1 |2=Leaf 2 |3=Leaf 3 |4=Leaf 4 |5=Leaf 5 |6=Leaf 6 }} |code2=<syntaxhighlight lang="wikitext">{{clade sequential |1=Leaf 1 |label2=Clade 2 |2={{clade |1=Leaf 2A |2=Leaf 2B }} |3=Leaf 3 |label4=Clade 4 |4={{clade |1=Leaf 4A |2=Leaf 4B }} |5=Leaf 5 |6=Leaf6 }}</syntaxhighlight> |output2={{clade sequential |1=Leaf 1 |label2=Clade 2 |2={{clade |1=Leaf 2A |2=Leaf 2B }} |3=Leaf 3 |label4=Clade 4 |4={{clade |1=Leaf 4A |2=Leaf 4B }} |5=Leaf 5 |6=Leaf6 }} }} The second example shows that some substructure can be added to each level with normal use of the {{t|clade}} template. === Using subtrees === This method uses the parameters {{para|target}} and {{para|subclade}} to "modularise" the phylogenetic tree. Each subtree is processed in parallel so they don't contribute to the expansion depth in an additive manner. The limit applies to each tree, but many subtrees can be used. The basic arrangement is illustrated below. The main tree has two subclades, A and B, and subclade B calls a third. {{clade example |decription=|code=|output= |description1x=Basic tree without subclades |code1=<syntaxhighlight lang="wikitext">{{Clade |label1=root |sublabel1=[12/40] |1={{Clade |1=Leaf 1 |2={{clade |1=Leaf 2.1 |2={{clade |1=Leaf 2.2.1 |2={{clade |label1=Subclade A |1={SUBCLADE_A} |label2=Subclade B |2={SUBCLADE_B} }} }} }} }} |targetA ={SUBCLADE_A} |subcladeA={{Clade |1=Leaf A1 |2={{clade |1=Leaf A2.1 |2={{clade |1=Leaf A2.2.1 |2=Leaf A2.2.2 }} }} }} |targetB = {SUBCLADE_B} |subcladeB={{Clade |1=Leaf B1 |2={{clade |1=Leaf B.1 |2={{clade |1=Leaf B2.2.1 |label2=Subclade C |2={TARGET_C} }} }} }} |targetC = {TARGET_C} |subcladeC={{Clade |1=Leaf C1 |2={{clade |1=Leaf C2.1 |2={{clade |1=Leaf C2.2.1 |2=Leaf C2.2.2 }} }} }} </syntaxhighlight> |output1={{Clade |label1=root |sublabel1=[12/40] |1={{Clade |1=Leaf 1 |2={{clade |1=Leaf 2.1 |2={{clade |1=Leaf 2.2.1 |2={{clade |label1=SubcladeA |1={SUBCLADE_A} |label2=SubcladeB |2={SUBCLADE_B} }} }} }} }} |targetA ={SUBCLADE_A} |subcladeA={{Clade |1=Leaf A1 |2={{clade |1=Leaf A2.1 |2={{clade |1=Leaf A2.2.1 |2=Leaf A2.2.2 }} }} }} |targetB = {SUBCLADE_B} |subcladeB={{Clade |1=Leaf B1 |2={{clade |1=Leaf B.1 |2={{clade |1=Leaf B2.2.1 |label2=SubcladeC |2={TARGET_C} }} }} }} |targetC = {TARGET_C} |subcladeC={{Clade |1=Leaf C1 |2={{clade |1=Leaf C2.1 |2={{clade |1=Leaf C2.2.1 |2=Leaf C2.2.2 }} }} }} }} }} The encoding relies on a number of conventions. * The names of the subclades are in uppercase and enclosed in a single brace. This is not absolutely necessary, as long as the names are unique, but some advanced features (e.g. partial tranclusion) rely on this convention. * The parameters {{para|subcladeA}}, {{para|subcladeB}}, ... {{para|subcladeZ}} contain the subtrees in clade structure that will be substituted into the main tree. * The parameters {{para|targetA}}, {{para|targetB}}, ... {{para|subcladeZ}} contain the targets where the subtrees will be substituted. For instance, {{para|targetA|{SUBCLADE_A}}} indicates that the target <code>{SUBCLADE_A}</code> will be replaced by the content of {{para|subcladeA|''content''}}. * The target parameters may be omitted and the default targets are <code>{SUBCLADE_A}</code> and <code>{SUBCLADE_B}</code> for {{para|subcladeA}} and {{para|subcladeB}}, respectively. * The suffixes A-Z were chosen because these parameters don't correspond the other numbered parameters used by the template (e.g. {{para|1}}, {{para|label2}} etc. * The subclades can all be listed in the outer clade template or nested within the appropriate tree. For instance, in the example subclade C is listed at the end of the outer clade template but this could have been nested in the clade template attached to subtree B. An example of a large phylogenetic tree divided into multiple subtrees can be found at {{tl|Phylogeny/APG IV}}. ===Add interactivity with collapsible clades=== {{further|Template:Clade hidden}} Sometimes with large phylogenetic trees it is hard to see the wood for the trees. The cladogram may exceed the screen height making it difficult to see the overall structure and important small clades are too hard to see. A way around this is to collapse the large clades and expand them interactively. The following example shows a simple example to illustrate the principle: {{clade example |code=|output= |code1=<syntaxhighlight lang="wikitext">{{clade |style=font-size:80%;line-height:90%; |label1='''Amphibia''' |1={{clade |1=[[Gymnophiona]] (caecilians) |label2=[[Batrachia]] |2={{clade hidden |id=1 |mode=left |expand-text=(frogs and salamanders) |1=[[Caudata]] (salamanders) |2=[[Anura (frog)|Anura]] (frogs) }} }} }}</syntaxhighlight> |output1={{clade |style=font-size:80%;line-height:90%; |label1='''Amphibia''' |1={{clade |1=[[Gymnophiona]] (caecilians) |label2=[[Batrachia]] |2={{clade hidden |id=1 |mode=left |expand-text=(frogs and salamanders) |1=[[Caudata]] (salamanders) |2=[[Anura (frog)|Anura]] (frogs) }} }} }} }} A note of caution. The Wikimedia collapsible elements require javascript and are currently disabled in the mobile view. In such cases the whole cladogram will be shown. As with any large phylogentic trees, editors should decide if having a smaller less inclusive tree makes the point more clearly. {{clear}} == Graphical summary == {{Clade/doc/graphic summary}} <includeonly>{{Sandbox other||[[Category:Genealogy formatting templates]]}}</includeonly>
返回
模板:Clade/doc
。
开关有限宽度模式