zoukankan      html  css  js  c++  java
  • matplotlib添加子图(拼图功能)

      我们已经知道,matplotlib是python中的一个十分好用的作图库,它的简单的使用方法可以在之前的随笔中找到。传送门:https://www.cnblogs.com/chester-cs/p/11879444.html

      之前没有涉及到的是一个用途十分广泛的功能:子图(拼图功能),想象我们有四个对比曲线图,是一个问题不同的算法实现结果。假如一个图接一个图画的画太拖沓,我们又不想一上来就画在同一个画布上,那么这时我们就可以使用拼图功能。

      没时间解释了,直接上代码。以四种排序算法的运行时间曲线为例:

    fig = plt.figure()    # 生成新的画布fig
    fig.set_size_inches(18.5, 10.5)     # 调整画布为合适大小
    
    ax1 = fig.add_subplot(221)    # 关键点,我们考虑在画布中加入一个一个的子图,(221这种排列的含义不必多解释了吧)
    plt.plot(Size,INSERTSORT_Mean,'b')
    plt.plot(Size,INSERTSORT_Mean,'ro')
    plt.grid()    # 画网格
    plt.xlabel("Data Size")
    plt.ylabel("Time Cost /s")
    plt.title("INSERTSORT Timecost Mean")    # 加上标题
    
    ax2 = fig.add_subplot(222) 
    plt.plot(Size,MERGE_SORT_Mean,'b')
    plt.plot(Size,MERGE_SORT_Mean,'ro')
    plt.grid()
    plt.xlabel("Data Size")
    plt.ylabel("Time Cost /s")
    plt.title("MERGESORT Timecost Mean")
    
    ax3 = fig.add_subplot(223) 
    plt.plot(Size,HEAPSORT_Mean,'b')
    plt.plot(Size,HEAPSORT_Mean,'ro')
    plt.grid()
    plt.xlabel("Data Size")
    plt.ylabel("Time Cost /s")
    plt.title("HEAPSORT Timecost Mean")
    
    ax4 = fig.add_subplot(224) 
    plt.plot(Size,QUICKSORT_Mean,'b')
    plt.plot(Size,QUICKSORT_Mean,'ro')
    plt.grid()
    plt.xlabel("Data Size")
    plt.ylabel("Time Cost /s")
    plt.title("QUICKSORT Timecost Mean")  

      效果是这样的:

       上面一大串代码,但关键点很少:

    1. 生成一个独立的画布对象,不影响其他模块
    2. 在画布上一个一个的添加子图对象(subplot)
    3. 每次添加新的子图,画笔就会移动到新的子图上

      只要遵循以上的步骤,就能实现作图的拼接了~

  • 相关阅读:
    CentOS7下Tomcat启动慢的原因及解决方案
    在SpringBoot中使用RabbitMQ
    SpringBoot 中使用Redis分布式锁
    微信小程序个人入门开发
    CentOS 通过 expect 批量远程执行脚本和命令
    (七)Spring Cloud 配置中心config
    (六)Spring Cloud 网关Zuul
    (五)Spring Cloud 熔断器 hystrix
    用Sql Server自动生产html格式的数据字典
    TCP介绍
  • 原文地址:https://www.cnblogs.com/chester-cs/p/12671950.html
Copyright © 2011-2022 走看看