建造一棵向下和向上生长的树

建造一棵向下和向上生长的树

我需要画一棵树,先向下生长,然后向上生长。在 pgfmanual 第 322 页中,提到了“生长”键。我没有办法指定另一侧的根/父级。此外,还谈到了定义生长函数的个人方法,但没有示例。因此,我在一个 tikz 图片环境中放置了两棵树,一棵向上生长,另一棵向下生长。但对齐真的很麻烦(请参阅 xhift 命令),甚至可能是不可能的。因此,我需要帮助来构建一棵生长方向不断变化的树。对我来说,问题是我不知道如何指定一些子代的父代,这对于从上述物种连接“属:芸苔属”、对于“目:天门冬目”和“纲:木兰纲”也是必要的。在最后一种情况下,如果我向下生长,则有三个 Ordo 子代和一个父代(纲...)。我希望,如果有人能解决这个问题,对齐将是一个小挑战,并且“类:木兰纲”(在树的末端)将作为另一个父类“户外”居中。提前谢谢大家。到目前为止,您可以在 mwe 中看到我所取得的成果。

    \documentclass[10pt,a4paper,table]{article}
    \usepackage[showframe,
                left=2cm, 
                right=2cm,
                bottom=1.75cm]{geometry}
                
    %%%%%----- tikz -----%%%%%
    \usepackage{tikz,fp}
    \tikzstyle{every picture,
              }+=[remember picture]
          
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc} % \"a usw. !!!
    \usepackage[figurename=Abb.]{caption}
    \begin{document}
    
    \tikzstyle{every picture}+=[remember picture]
    \begin{figure}[h]\centering
       \begin{tikzpicture}[%sibling distance=15em,
                           level distance=25mm,
       every node/.style = {shape=rectangle, rounded corners,
          draw, align=left, inner sep=4pt,
          top color=white, bottom color=blue!20,
       },
       level 1/.style={sibling distance=10em},
       ]
       \node {\textsc{Outdoor Freilandflächen} 112.000 ha\\
              \textsc{Ernte:} 3.2 Mio to\\
              \textsc{Betriebe ges.:} 6.600\\
              \textsc{Ökologisch:} 1.100
             }
             child { node (spargel) {\textsc{Spargel:}\\ 24.000 ha\\  100.000 to} }
             child { node (zwiebel) {\textsc{Speisezwiebeln:}\\ 9.700 ha\\} }
             child { node (moehren) {\textsc{Möhren:}\\ 10.200 ha\\} }
             child { node (weisskohl) {\textsc{Weißkohl:}\\ 5.800 ha\\} } %
             child { node (blumenkohl) {\textsc{Blumenkohl:}\\ 4.200 ha\\} } %
       ;
    \end{tikzpicture}
    %
    %
    \begin{tikzpicture}
    [level distance=20mm,
     every node/.style = {shape=rectangle, rounded corners,
                          draw, align=left, inner sep=4pt,
                          top color=white, bottom color=blue!20,
                        },
     level 1/.style={sibling distance=15em},
    ]
    \node[xshift=250mm] {\textsc{Class:}\\    Magnoliopsida %xhift doesn't work
          }[grow=up]
    %
    child {node[xshift=30mm]{\textsc{Ordo:}\\ \textit{Brassicales} }
           child {node {\textsc{Familia:}\\ \textit{Brassicaceae:} } 
                  child {node{\textsc{Subfamilia:}    \\ \textit{missing} }
                         child {node{\textsc{Tribus:}    \\ \textit{missing} }
                                child {node {\textsc{Genus:}\\ \textit{Brassica} }
                                       child {node[xshift=-10mm] (sblumenkohl){\textsc{Species:}\\
                                                                               \textit{Brassica oleracea} \\var.
                                                                               \textit{botrytis}    
                                                                               \textsc{L.} \\ }
                                             }
                                       child {node[xshift=08mm] (sweisskohl){\textsc{Species:}\\       
                                                                             \textit{Brassica oleracea} \\convar.
                                                                             \textit{capitata} \\var.   
                                                                             \textit{alba}  
                                                                             \textsc{L.} 
                                                                            }
                                             }
                                      }
                               } 
                        }
                 }
          } %ende ordo Brassicales 
    child {node[xshift=28mm] {\textsc{Ordo:}\\ Apiales }
           child {node {\textsc{Familia:}\\ \textit{Apiaceae:} } 
                  child {node{\textsc{Subfamilia:} \\ \textit{missing} }
                         child {node{\textsc{Tribus:}  \\ \textit{missing} }
                                child {node {\textsc{Genus:}\\ \textit{Daucus} \textsc{L.} 1753 } 
                                       child {node(smoehren){\textsc{Species:} \\ \textit{Daucus carota} \\ssp. \textit{sativus} \\ }
                                             }
                                      }     
                               }     
                        } 
                 } 
          } %ende apiales
    % 
    %
    child {node[xshift=12mm]{\textsc{Ordo:}\\ \textit{Asparagales}\\ }
           child {node[xshift=09mm]{\textsc{Familia:}\\ \textit{Amaryllidaceae:} } 
                  child {node{\textsc{Subfamilia:} \\ \textit{Allioideae} }
                         child {node {\textsc{Tribus:}\\ \textit{Allieae} }  
                                child {node{\textsc{Genus:} \\ \textit{Allium} \textsc{} }
                                       child {node(szwiebel){\textsc{Species:} \\ \textit{Allium cepa} \textsc{}\\ \\ }
                                             }
                                      }
                               }
                        }  
                 } 
    %
           child {node[xshift=27mm] {\textsc{Familia:}\\ \textit{Asparagaceae:} } 
                  child {node[xshift=0mm]{\textsc{Subfamilia:}  \\ \textit{Asparagoideae} }
                         child {node[xshift=0mm]{\textsc{Tribus:} \\ \textit{missing} }
                                child {node[xshift=0mm] {\textsc{Genus:} \\ \textit{Asparagus} } 
                                       child {node[xshift=0mm](sspargel){\textsc{Species:} \\ \textit{Asparagus}  \\ \textit{officinalis} \textsc{L.}\\ }
                                             }
                                      }
                               }
                        }
                 } 
          } %ende ordo asparagales 
    ;  
    
    \draw [shorten >=0pt,thick] (zwiebel.south) -- (szwiebel.north);
    \draw [shorten >=0pt,thick] (spargel.south) -- (sspargel.north);
    \draw [shorten >=0pt,red,thick,dashed] (moehren.south) -- (smoehren.north);
    \draw [shorten >=0pt,green,thick,dashed] (weisskohl.south) -- (sweisskohl.north);
    \draw [shorten >=0pt,red,thick,dashed] (blumenkohl.south) -- (sblumenkohl.north);
    
    \end{tikzpicture}
       
    \caption[Übersicht \textit{Gemüse BRD 2013} \textsc{}] {Übersicht \textit{Gemüse BRD 2013} }
    \end{figure}
    \end{document}
    

在此处输入图片描述

答案1

为了绘制您的树,我将使用forest包并为其定义树仅向南生长,即只有一棵树。 的一些分支共有的节点forest与幻影节点(节点“Ordo”)或坐标(节点“Genus”)成对放置。 分支末端的节点被命名(从 aux1 到 aux6)。 这些名称用于绘制未在 中绘制为边的线forest

编辑: 在使用时siunitx定义为range-units = single,,group-minimum-digits=4group-separator={.}这样可以统一数字的书写方式,并且数量范围更短。

\documentclass[a4paper]{article}
\usepackage[showframe,
            hmargin=2cm,
            bottom=1.75cm]{geometry}
\usepackage[T1]{fontenc}

\usepackage[edges]{forest}
\usepackage[ngerman]{babel}
\usepackage[figurename=Abb.]{caption}
\usepackage{siunitx}    % used is v3

\begin{document}
    \begin{figure}[ht]
    \centering
    \sisetup{range-units = single,
             group-minimum-digits=4,
             group-separator={.}
             }
\begin{forest}
for tree = {
% nodes
    draw,
    rounded corners,
    top color=white, bottom color=blue!20,
    minimum width=8em,
    align=left, 
% tree
    grow=south,
    forked edge,    % for forked edge
    s sep = 2mm,    % "sibling" distance
    l sep = 4mm,    % "level" distance
 fork sep = 2mm,    % distance from parent to branching point
            },
[\textsc{Outdoor Freilandflächen} \qty{112 000}{ha}\\
 \textsc{Ernte:} 3.2 Mio to\\
 \textsc{Betriebe ges.:} 6.600\\
 \textsc{Ökologisch:} 1.100
    [\textsc{Spargel:}\\
     \qtyrange{24 000}{100 000}{ha}
        [\textsc{Species:}  \\
         \textit{Asparagus} \\
         \textit{officinalis} L.\\ ~
             [\textsc{Genus:} \\
              \textit{Asparagus}
                [\textsc{Tribus:} \\
                 \textit{missing}
                    [\textsc{Subfamilia:}  \\
                     \textit{Asparagoideae}
                        [\textsc{Familia:}\\
                         \textit{Asparagaceae:}
                            [,phantom]
                            [\textsc{Ordo:}\\ \textit{Asparagales}, name=aux1]
                         ]
                    ]
                ]
             ]
        ]
    ]
    [\textsc{Speisezwiebeln:}\\ 
     \qty{9 700}{ha}
        [\textsc{Species:} \\
         \textit{Allium cepa}\\ ~\\~
            [\textsc{Genus:} \\
             \textit{Allium}
                [\textsc{Tribus:}\\
                 \textit{Allieae}
                    [\textsc{Subfamilia:} \\
                     \textit{Allioideae}
                        [\textsc{Familia:}\\ \textit{Amaryllidaceae:}, name=aux2]
                    ]
                 ]
            ]
        ]
    ]
    [\textsc{Möhren:}\\ 
     \qty{10 200}{ha}
        [\textsc{Species:} \\
         \textit{Daucus carota}\\
         ssp. \textit{sativus}\\ ~
            [\textsc{Genus:}\\
             \textit{Daucus} L. 1753
                [\textsc{Tribus:}  \\
                 \textit{missing}
                    [\textsc{Subfamilia:} \\
                     \textit{missing}
                        [\textsc{Familia:}\\
                         \textit{Apiaceae:}
                            [\textsc{Ordo:}\\ \textit{Apiales}, 
                                [\textsc{Class:}\\
                                 \textit{Magnopoliopsida},name=aux3]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
    [\textsc{Weißkohl:}\\ 
     \qty{5 800}{ha}      
        [\textsc{Species:}\\
         \textit{Brassica oleracea} \\
         convar. \textit{capitata} \\
         var. \textit{alba} L.
            [,coordinate, no edge] 
            [\textsc{Genus:}\\ 
             \textit{Brassica}, name=aux5
                [\textsc{Tribus:}\\ 
                 \textit{missing} 
                    [\textsc{Subfamilia:}\\ 
                     \textit{missing} 
                        [\textsc{Familia:}\\ 
                         \textit{Brassicaceae:} 
                            [\textsc{Ordo:}\\ 
                             \textit{Brassicales}, name=aux6]
                        ]
                    ]
                ]
            ]
        ]
    ]
    [\textsc{Blumenkohl:}\\ 
     \qty{4 200}{ha}     
        [\textsc{Species:}\\
         \textit{Brassica oleracea} \\
         var. \textit{botrytis} L. \\ ~, name=aux4] 
    ]
]
\draw   ([xshift=1em] aux1.north) -- ++ (0,0.2) -| (aux2);
\draw   (aux1.south) -- ++ (0,-0.2) -| ([xshift=-1em] aux3.north);
\draw   (aux4.south) -- ++ (0,-0.2) -| ([xshift=+1em] aux5.north);
\draw   (aux6.south) -- ++ (0,-0.2) -| ([xshift=+1em] aux3.north);
\end{forest}
\caption[Übersicht \textit{Gemüse BRD 2013} \textsc{}] {Übersicht \textit{Gemüse BRD 2013} }
\label{fig:ubershicht}
    \end{figure}
\end{document}

在此处输入图片描述

相关内容