在python中,如何在使用Bio.Phylo.draw()生成系统发育树时更改叶节点的字体大小?
In python, how can I change the font size of leaf nodes when generating phylogenetic trees using Bio.Phylo.draw()?
我正在使用 Biopython 的 Phylo 包来创建系统发育树。
对于大树,我需要减小叶节点的字体大小。有人建议更改 matplotlib.pyplot.rcParams['font.size'] 但这只允许我更改轴名称和标题,因为 Phylo 定义了自己的字体大小。
我无法更改 Phylo 源代码,因为我正在大学使用它。
定义图形或坐标轴不是一种选择,因为 Phylo.draw() 创建了它自己的。
有没有人对如何解决这个问题有任何建议,也许可以延长 y-axis?
到目前为止,我使用以下代码生成树:
import matplotlib
import matplotlib.pyplot as plt
from Bio import Phylo
from cStringIO import StringIO
def plot_tree(treedata, output_file):
handle = StringIO(treedata) # parse the newick string
tree = Phylo.read(handle, "newick")
matplotlib.rc('font', size=6)
Phylo.draw(tree)
plt.savefig(output_file)
return
Phylo.draw()
可以将轴作为参数。从 Biopython 中的方法文档中,您可以阅读以下内容
axes : matplotlib/pylab axes
If a valid matplotlib.axes.Axes instance, the phylogram is plotted in that Axes. By default (None), a new figure is created.
这意味着您可以根据自己选择的大小加载自己的坐标轴。例如:
import matplotlib
import matplotlib.pyplot as plt
from Bio import Phylo
from io import StringIO
def plot_tree(treedata, output_file):
handle = StringIO(treedata) # parse the newick string
tree = Phylo.read(handle, "newick")
matplotlib.rc('font', size=6)
# set the size of the figure
fig = plt.figure(figsize=(10, 20), dpi=100)
# alternatively
# fig.set_size_inches(10, 20)
axes = fig.add_subplot(1, 1, 1)
Phylo.draw(tree, axes=axes)
plt.savefig(output_file, dpi=100)
return
我正在使用 Biopython 的 Phylo 包来创建系统发育树。
对于大树,我需要减小叶节点的字体大小。有人建议更改 matplotlib.pyplot.rcParams['font.size'] 但这只允许我更改轴名称和标题,因为 Phylo 定义了自己的字体大小。 我无法更改 Phylo 源代码,因为我正在大学使用它。 定义图形或坐标轴不是一种选择,因为 Phylo.draw() 创建了它自己的。
有没有人对如何解决这个问题有任何建议,也许可以延长 y-axis?
到目前为止,我使用以下代码生成树:
import matplotlib
import matplotlib.pyplot as plt
from Bio import Phylo
from cStringIO import StringIO
def plot_tree(treedata, output_file):
handle = StringIO(treedata) # parse the newick string
tree = Phylo.read(handle, "newick")
matplotlib.rc('font', size=6)
Phylo.draw(tree)
plt.savefig(output_file)
return
Phylo.draw()
可以将轴作为参数。从 Biopython 中的方法文档中,您可以阅读以下内容
axes : matplotlib/pylab axes If a valid matplotlib.axes.Axes instance, the phylogram is plotted in that Axes. By default (None), a new figure is created.
这意味着您可以根据自己选择的大小加载自己的坐标轴。例如:
import matplotlib
import matplotlib.pyplot as plt
from Bio import Phylo
from io import StringIO
def plot_tree(treedata, output_file):
handle = StringIO(treedata) # parse the newick string
tree = Phylo.read(handle, "newick")
matplotlib.rc('font', size=6)
# set the size of the figure
fig = plt.figure(figsize=(10, 20), dpi=100)
# alternatively
# fig.set_size_inches(10, 20)
axes = fig.add_subplot(1, 1, 1)
Phylo.draw(tree, axes=axes)
plt.savefig(output_file, dpi=100)
return