簡體   English   中英

Biopython Phylo.draw():為什么不返回軸實例?

[英]Biopython Phylo.draw() : Why not returning axes instance?

當我們這樣做時,Bio.Phylo中有一些我不理解的東西:

from Bio import Phylo
tree = Phylo.read("my_tree","newick")
tree_plot = Phylo.draw(tree)

編輯:

$ cat my_tree
(((A,B),C),D)

tree_plot是Nonetype,因為Phylo.draw()不返回任何內容。 源代碼的最后兩行是:

    if do_show:
        plt.show()

我想與樹交互,並在一些樹葉前添加一個點。 所以我在最后一行的計算機上添加了源代碼:

    if do_show:
        plt.show()
    return axes

現在,用我在開頭寫的那段代碼,我在tree_plot中:

In [1]: type(tree_plot)
Out[1]: matplotlib.axes.AxesSubplot

而且我現在能夠從樹中訪問數據,例如:

In [2]: tree_plot.texts
Out[2]: [<matplotlib.text.Text at 0x114d02710>,
<matplotlib.text.Text at 0x114d02990>,
<matplotlib.text.Text at 0x114d02ed0>,
<matplotlib.text.Text at 0x114d00cd0>,
<matplotlib.text.Text at 0x114d3c410>,
<matplotlib.text.Text at 0x114d3cb10>] 

或繪制一條線:

tree_plot.plot(range(10))

等等任何其他axis.AxesSubplot方法。

我的問題是:

為什么Phylo.draw()函數中沒有return語句? 如果它是有目的的,為什么以及如何在同一軸上繪制東西?

我正在使用

  • python 2.7.3
  • matplotlib 1.3.0
  • Biopython 1.63

謝謝

為什么他們不回復你需要問開發人員的數字(或者可能會建議改變)。 但是,它很容易解決:

首先確保您在交互模式下使用matplotlib

from matplotlib import pyplot as plt
plt.ion()

然后運行你的:

Phylo.draw(tree)

之后,如果你只是想要ax ,添加一些你使用的文字

ax = plt.gca()
ax.text(1, 4, "Hello World")
plt.show()

或者如果你想要整個數字使用plt.gcf() 記得做plt.show()來查看你的更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM