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


Posted in Python onJuly 07, 2019

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

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 相关文章推荐
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
进一步理解Python中的函数编程
Apr 13 Python
20招让你的Python飞起来!
Sep 27 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
python中子类与父类的关系基础知识点
Feb 02 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 #Python
python画双y轴图像的示例代码
Jul 07 #Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 #Python
python绘制多个子图的实例
Jul 07 #Python
python 含子图的gif生成时内存溢出的方法
Jul 07 #Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 #Python
Python实现FTP文件传输的实例
Jul 07 #Python
You might like
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
python调用staf自动化框架的方法
2018/12/26 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python中如何打包用户自定义模块
2020/09/23 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
法学专业毕业生自荐信范文
2013/12/18 职场文书
班级学习计划书
2014/04/27 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
小学运动会报道稿
2014/10/04 职场文书
统计员岗位职责范本
2015/04/14 职场文书
公司辞职信模板
2015/05/13 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书