小编mad*_*cap的帖子

在python中,如何使用Bio.Phylo.draw()生成系统发育树时更改叶节点的字体大小?

我正在使用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
Run Code Online (Sandbox Code Playgroud)

情节

python tree draw biopython phylogeny

5
推荐指数
1
解决办法
1010
查看次数

如何将权重参数传递给seaborn的jointplot()(或底层的kdeplot)

我尝试使用以下代码创建一个seaborn联合图:

import seaborn as sns 
import pandas as pd
import numpy as np
import matplotlib.pylab as plt

testdata = pd.DataFrame(np.array([[100, 1, 3], [5, 2, 6], [25, 3, -4]]), index=['A', 'B', 'C'], columns=['counts', 'X', 'Y'])
counts = testdata['counts'].values
sns.jointplot('X', 'Y', data=testdata, kind='kde', joint_kws={'weights':counts})
plt.savefig('test.png')
Run Code Online (Sandbox Code Playgroud)

现在joint_kws不会引发错误,但是在图中可以看到权重确定不被考虑: 在此输入图像描述

我也尝试过JointGrid,将权重传递给边缘分布:

g = sns.JointGrid('X', 'Y', data=testdata)
x = testdata['X'].values
y = testdata['Y'].values
g.ax_marg_x.hist(x, bins=np.arange(-10,10), weights=counts)
g.ax_marg_y.hist(y, bins=np.arange(-10,10), weights=counts, orientation='horizontal')
g.plot_marginals(sns.distplot)
g.plot_join(sns.kdeplot, joint_kws={'weights':counts})
plt.savefig('test.png')
Run Code Online (Sandbox Code Playgroud)

但这仅适用于边际分布,而联合图仍未加权:

在此输入图像描述

有谁知道如何做到这一点?

python seaborn

5
推荐指数
1
解决办法
1650
查看次数

标签 统计

python ×2

biopython ×1

draw ×1

phylogeny ×1

seaborn ×1

tree ×1