6

我正在使用 Biopython 的 Phylo 包来创建系统发育树。

对于大树,我需要减小叶节点的字体大小。有人建议更改 matplotlib.pyplot.rcParams['font.size'] 但这仅允许我更改轴名称和标题,因为 Phylo 定义了自己的字体大小。我无法更改 Phylo 源代码,因为我在大学使用它。定义图形或轴不是一个选项,因为 Phylo.draw() 创建了自己的选项。

有没有人对如何解决这个问题有任何建议,也许是拉伸 y 轴?

到目前为止,我使用以下代码来生成树:

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

阴谋

4

1 回答 1

4

Phylo.draw()可以将坐标轴作为参数。从 Biopython 中的方法文档中,您可以阅读以下内容

轴:matplotlib/pylab 轴如果一个有效的 matplotlib.axes.Axes 实例,系统图将绘制在该轴中。默认情况下(无),创建一个新图形。

这意味着您可以根据自己选择的尺寸加载自己的轴。例如:

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
于 2015-04-07T15:46:22.307 回答