• Matplotlib初体验


    为一个客户做了关于每个差异otu在时间点上变化的折线图,使用python第一次做批量作图的程序,虽然是很简单的折线图,但是也是第一次使用matplotlib的纪念。

    ps:在第一个脚本上做了点小的改动,加上了分类信息作为图的标题,加上网格便于对照y轴丰度值,x轴的名称更加接近样品的实际名称。

     1 from __future__ import division
     2 import numpy as np
     3 import matplotlib.pyplot as plt
     4 from matplotlib.ticker import MultipleLocator, FormatStrFormatter
     5 import sys
     6 
     7 def main():
     8     file = sys.argv[1]
     9     x = np.array([0,6,12,18])
    10     mean_file = ['../c-%dm_vs_cf-%dm.mean.profile'%(t,t) for t in [0,6,12,18]]
    11     with open(file) as f:
    12         f.next()
    13         for line in f:
    14             C = []
    15             CF = []
    16             tabs = line.strip().split('	')
    17             otu_name = tabs.pop(0)
    18             for file in mean_file:
    19                 (C_temp,CF_temp) = getMeanProfile(otu_name,file)
    20                 C.append(float(C_temp))
    21                 CF.append(float(CF_temp))
    22             C = np.array(C)
    23             CF = np.array(CF)
    24             tax_name = tax[otu_name]
    25             do_plot(tax_name,otu_name,x,C,CF)
    26         f.close()
    27 
    28 def getMeanProfile(otu_name,file):
    29     handle = open(file)
    30     handle.next()
    31     for line in handle:
    32         tabs = line.strip().split('	')
    33         if otu_name != tabs[0]:
    34             continue
    35         return( (tabs[1],tabs[2]) )
    36     handle.close()
    37 
    38 def do_plot(title,file_name,x,y1,y2):
    39     plt.figure(figsize=(10,6))
    40     ax = plt.subplot(111)
    41     plt.plot(x,y1,label="C",color="red",linewidth=2)
    42     plt.plot(x,y2,label="CF",color="blue",linewidth=2)
    43     xmajorLocator = MultipleLocator(6)
    44     xmajorFormatter = FormatStrFormatter('%dm')
    45     yRange = ( max(np.max(y1),np.max(y2)) - min(np.min(y1),np.min(y2)) )
    46     ymajorLocator = MultipleLocator(yRange/10)
    47     yminorLocator = MultipleLocator(yRange/40)
    48     ax.xaxis.set_major_locator(xmajorLocator)
    49     ax.xaxis.set_major_formatter(xmajorFormatter)
    50     ax.yaxis.set_major_locator(ymajorLocator)
    51     ax.yaxis.set_minor_locator(yminorLocator)
    52     ax.xaxis.grid(True,which='major')
    53     ax.yaxis.grid(True,which='minor')
    54     plt.xlabel("Month(s)")
    55     plt.ylabel("mean_profile")
    56     plt.title(title)
    57     plt.legend()
    58     plt.savefig("%s.png"%file_name,dpi=80)
    59 
    60 def getTax():
    61     for line in open('../tax.txt'):
    62         tabs = line.strip().split('	')
    63     for line in open('../tax.txt'):
    64         tabs = line.strip().split('	')
    65         tax[tabs[0]] = tabs[1].split(';')[-1]
    66 
    67 if __name__ == '__main__':
    68     tax = {}
    69     getTax()
    70     main()
  • 相关阅读:
    计算机科学引论笔记
    Bootstrap实战 瀑布流布局
    前端性能和加载体验优化实践(附:PWA、离线包、内存优化、预渲染)
    Promise + Async&Await + Array.reduce + 函数递归 解决网络/接口请求的依次/排队不间断间隔访问
    webfunny前端监控新产品发布:点位系统上线,简单6步操作
    Java 全栈知识体系(2021 PDF 版本)
    Java 面试题及答案整理(2021最新版)持续更新中~~~
    python相关常见安装问题
    获取某一个数的2进制位数以及bitmask
    centos7下利用qemu搭建arm模拟器
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4528493.html
Copyright © 2020-2023  润新知