ytree.visualization.tree_plot.TreePlot¶
-
class
ytree.visualization.tree_plot.
TreePlot
(tree, dot_kwargs=None, node_function=None, edge_function=None)[source]¶ Make a simple merger tree plot using pydot and graphviz.
Parameters: - tree (merger tree node
TreeNode
) – The merger tree to be plotted. - dot_kwargs (optional, dict) – A dictionary of keyword arguments to be passed to pydot.Dot. Default: None.
- node_function (optional, function) – A function accepting a single argument of a
TreeNode
and returning a dictionary of keywords to be given to pydot for creating the node object on the plot. This can be used to customize the appearance of the nodes. See examples below. Default: None. - edge_function (optional, function) – A function accepting two
TreeNode
objects and returning a dictionary of keywords to be given to pydot for creating the edge object on the plot (the lines connecting halos). This can be used to customize the appearance of the edges. See examples below. Default: None.
-
size_field
¶ The field to determine the size of each circle. Default: ‘mass’.
Type: str
-
size_log
¶ Whether to scale circle sizes based on log of size field. Default: True.
Type: bool
-
min_mass
¶ The minimum halo mass to be included in the plot. If given as a float, units are assumed to be Msun. Default: None.
Type: float or unyt_quantity
-
min_mass_ratio
¶ The minimum ratio between a halo’s mass and the mass of the main halo to be included in the plot. Default: None.
Type: float
Examples
>>> import ytree >>> a = ytree.load("tree_0_0_0.dat") >>> p = ytree.TreePlot(a[0]) >>> p.min_mass = 1e6 # Msun >>> p.save()
>>> # customizing nodes >>> import ytree >>> def my_node(halo): ... label = f"{halo['uid']}" ... my_kwargs = {"label": label, "fontsize": 8, "shape": "square"} ... return my_kwargs >>> a = ytree.load("tree_0_0_0.dat") >>> p = ytree.TreePlot(a[0], node_function=my_node) >>> p.save()
>>> # customizing edges >>> import ytree >>> def my_edge(ancestor, descendent): ... if descendent['mass'] < ancestor['mass']: ... color = 'blue' ... else: ... color = 'black' ... my_kwargs = {"color": color, "penwidth": 5} ... return my_kwargs >>> a = ytree.load("tree_0_0_0.dat") >>> p = ytree.TreePlot(a[0], edge_function=my_edge) >>> p.save()
-
__init__
(tree, dot_kwargs=None, node_function=None, edge_function=None)[source]¶ Initialize a TreePlot.
Methods
__init__
(tree[, dot_kwargs, node_function, …])Initialize a TreePlot. save
([filename])Save the merger tree plot. Attributes
min_mass
The minimum halo mass to be included in the plot. min_mass_ratio
The minimum halo mass to main halo mass. size_field
The field to determine the size of each circle. size_log
Whether to scale circle sizes based on log of size field. - tree (merger tree node