Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib集合_yticklabels来自多个np.array()_Python_Python 2.7_Numpy_Matplotlib - Fatal编程技术网

Python Matplotlib集合_yticklabels来自多个np.array()

Python Matplotlib集合_yticklabels来自多个np.array(),python,python-2.7,numpy,matplotlib,Python,Python 2.7,Numpy,Matplotlib,我有两个numpy数组,prot_name和prot_nHarea,用于标记ytick prot_name = np.array(['HEMO', 'HSA', 'EGF', 'MYO', 'LACT', 'CKMM', 'BMG', 'IGF', 'CYTC', 'IFN', 'CREA', 'IL8']) prot_nHarea每个prot_名称有12个矩阵 我想让每个y记号的第一行作为prot_名称,后跟prot_nArea中矩阵的np.sum。下一行有它的np.mean prot_nH

我有两个numpy数组,prot_name和prot_nHarea,用于标记ytick

prot_name = np.array(['HEMO', 'HSA', 'EGF', 'MYO', 'LACT', 'CKMM', 'BMG', 'IGF', 'CYTC', 'IFN', 'CREA', 'IL8'])
prot_nHarea每个prot_名称有12个矩阵

我想让每个y记号的第一行作为prot_名称,后跟prot_nArea中矩阵的np.sum。下一行有它的np.mean prot_nHarea

现在我正在做硬代码来标记y记号。但是有没有什么方法可以在np.sumnp.arrayprot\u name后面跟着np.sumnp.arrayprot\u nHarea和np.meannp.arrayprot\u nHarea之间进行迭代?sum和mean的值以科学模式写入,当它们重叠时,\n我会稍微调整标签

    ax0.set_yticklabels(["K1 - HEMO sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[0])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[0]))), 
                    "K2 - HSA sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[1])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[1])))+"\n", 
                    "\nK3 - EGF sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[2])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[2]))),
                    "K4 - MYO sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[3])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[3]))),
                    "K5 - LACT sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[4])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[4]))),
                    "K6 - CKMM sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[5])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[5]))),
                    "K7 - BMG sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[6])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[6])))+"\n",
                    "K8 - IGF sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[7])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[7]))),
                    "K9 - CYTC sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[8])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[8]))),
                    "K10 - IFN sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[9])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[9]))),
                    "K11 - CREA sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[10])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[10]))),
                    "K12 - IL8 sum: "+str('{:.2e}'.format(np.sum(prot_nHarea[11])))+"\nmean: "+str('{:.2e}'.format(np.mean(prot_nHarea[11])))], fontsize='x-small') 

您可以通过列表理解来实现这一点,同时使用zip和enumerate在prot_name和prot_nHarea之间循环:

import numpy as np
import matplotlib.pyplot as plt

prot_name = np.array([
    'HEMO', 'HSA', 'EGF', 'MYO',
    'LACT', 'CKMM', 'BMG', 'IGF',
    'CYTC', 'IFN', 'CREA', 'IL8'
    ])
prot_nHarea = np.random.rand(12, 100)

yticklabels = ['K{} - {} sum: {:.2e} \nmean: {:.2e}'.format(
    i, name, Harea.sum(), Harea.mean()
    ) for i, (name, Harea) in enumerate(zip(prot_name, prot_nHarea))]

fig, ax = plt.subplots()

ax.set_yticks(range(12))
ax.set_yticklabels(yticklabels)

plt.show()

它工作得很好。非常感谢。请问是否要在每个标签的末尾添加\n,但标签之间的\n数量不相等。就像我设置了名为interval的换行数数组一样,yticklabels=['K{}-{}sum:{.2e}\n man:{.2e}\n*interval'。格式I,name,Harea.sum,Harea.mean for I,name,Harea in\u name,prot\n区域]其目的是我想将标签设置在刻度之间组的中心,但我的每个K有不同的行数,所以我无法确定行数。我应该在哪里插入\n*间隔?