python 实现在一张图中绘制一个小的子图方法

 更新时间:2019年07月07日 13:25:39   作者:wychen_sunshine  
今天小编就为大家分享一篇python 实现在一张图中绘制一个小的子图方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示:

具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法。

import matplotlib.pyplot as plt
import MySQLdb as mdb
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset


def graph():
  # 连接数据库
  conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='alibaba_trace', charset='utf8')

  # 如果使用事务引擎,可以设置自动提交事务,或者在每次操作完成后手动提交事务conn.commit()
  conn.autocommit(1) # conn.autocommit(True)

  # 使用cursor()方法获取操作游标
  cursor = conn.cursor()
  # 因该模块底层其实是调用CAPI的,所以,需要先得到当前指向数据库的指针。
  try:
    cursor.execute("select machineID, count(id) from batch_instance where machineID != 0 group by machineID")
    records = cursor.fetchall()
    list_records = list(records)

  except:
    import traceback
    traceback.print_exc()
    # 发生错误时回滚
    conn.rollback()
  finally:
    # 关闭游标连接
    cursor.close()
    # 关闭数据库连接
    conn.close()

  res = []
  res[:] = map(list, list_records)
  machineID = [x[0] for x in res]
  instance_num = [x[1] for x in res]
  print(max(instance_num))
  print(min(instance_num))


  fig = plt.figure()
  ax1 = fig.add_subplot(1, 1, 1)
  # # cdf
  # hist, bin_edges = np.histogram(instance_num, bins=len(np.unique(instance_num)))
  # cdf = np.cumsum(hist / sum(hist))
  # ax1.plot(bin_edges[1:], cdf, color='red', ls='-')
  # ax1.set_xlabel("instance number per machine")
  # ax1.set_ylabel("portion of machine")
  # plt.savefig('../../imgs_mysql/cdf_of_machine_instance.png')

  # # 直方图
  ax1.hist(instance_num, normed=False, alpha=1.0, bins=100)
  ax1.set_xlabel('instance number per machine')
  ax1.set_ylabel('machine number')
  # cdf 要添加的子图
  axins = inset_axes(ax1, width=1.5, height=1.5, loc='upper left')
  # ax1 大图
  # width height分别为子图的宽和高
  # loc 为子图在大图ax1中的相对位置 相应的值有
  # upper left
  # lower left
  # lower right
  # right
  # center left
  # center right
  # lower center
  # upper center
  # center
  hist, bin_edges = np.histogram(instance_num, bins=len(np.unique(instance_num)))
  cdf = np.cumsum(hist / sum(hist))
  axins.plot(bin_edges[1:], cdf, color='red', ls='-')
  axins.set_yticks([])
  # axins.set_xlabel("instance number per machine")
  # axins.set_ylabel("portion of machine")

  plt.savefig("../../imgs_mysql/hist_of_machine_instance")
  plt.show()

if __name__ == '__main__':
  graph()

以上这篇python 实现在一张图中绘制一个小的子图方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python绘制数码晶体管日期

    Python绘制数码晶体管日期

    这篇文章主要为大家详细介绍了Python绘制数码晶体管日期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • python之glob的用法详解

    python之glob的用法详解

    glob 是 Python 中用于文件模式匹配的一个模块,本文主要介绍了python之glob的用法详解,具有一定的参考价值,感兴趣的可以来了解一下
    2023-12-12
  • 如何生成对角矩阵 numpy.diag

    如何生成对角矩阵 numpy.diag

    这篇文章主要介绍了如何生成对角矩阵 numpy.diag,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python Dash框架在数据可视化仪表板中的应用与实践记录

    Python Dash框架在数据可视化仪表板中的应用与实践记录

    Python的Plotly Dash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一个互动数据仪表板,并通过代码示例帮助读者理解如何实现这一过程,感兴趣的朋友一起看看吧
    2025-03-03
  • Django ORM 常用字段与不常用字段汇总

    Django ORM 常用字段与不常用字段汇总

    这篇文章主要介绍了Django ORM 常用字段与不常用字段汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 讲解Python 中的 with 关键字

    讲解Python 中的 with 关键字

    这篇文章主要介绍了讲解Python 中的with关键字,文章基于python的相关资料展开 with 语句的一些基本概念和用法及其底层工作原理,下文更多内容感兴趣的小伙伴可以参考一下
    2022-05-05
  • Django3.0 异步通信初体验(小结)

    Django3.0 异步通信初体验(小结)

    这篇文章主要介绍了Django3.0 异步通信初体验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python实现人机对战的五子棋游戏

    python实现人机对战的五子棋游戏

    这篇文章主要为大家详细介绍了python实现人机对战的五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Python学习笔记之Django创建第一个数据库模型的方法

    Python学习笔记之Django创建第一个数据库模型的方法

    今天小编就为大家分享一篇Python学习笔记之Django创建第一个数据库模型的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python中标准库OS的常用方法总结大全

    Python中标准库OS的常用方法总结大全

    python中的OS库提供了使用各种操作系统功能的接口。是经常用到的一个库,所以这篇文章主要给大家总结介绍了关于Python中标准库OS的常用方法,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-07-07

最新评论