[英]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
语句? 如果它是有目的的,为什么以及如何在同一轴上绘制东西?
我正在使用
谢谢
为什么他们不回复你需要问开发人员的数字(或者可能会建议改变)。 但是,它很容易解决:
首先确保您在交互模式下使用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.