Matplotlib从多个np.数组()

2024-09-26 22:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个numpy数组,prot_nameprot_nHarea,它们用于标记ytick

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

prot_nHarea每个prot_name有12个矩阵。你知道吗

我希望每个y记号的第一行是prot_name,后面是prot_nHarea中矩阵的np.sum()。下一行的np.mean()prot_nHarea。你知道吗

enter image description here

现在我正在做硬代码来标记y记号。但是有没有什么方法可以遍历np.array(prot_name),然后是np.sum(np.array(prot_nHarea))np.mean(np.array(prot_nHarea))?sum和mean的值是用科学的模式写的,当它们重叠时,我会稍微调整一下标签。你知道吗

    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') 

Tags: name标记formatnpmeanarraysummyo
1条回答
网友
1楼 · 发布于 2024-09-26 22:11:10

您可以通过列表理解来实现这一点,同时使用zipenumerate循环遍历prot_nameprot_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()

enter image description here

相关问题 更多 >

    热门问题