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 相关文章推荐
python自动化测试之连接几组测试包实例
Sep 28 Python
Python实现把数字转换成中文
Jun 29 Python
Python中将字典转换为列表的方法
Sep 21 Python
Python机器学习之SVM支持向量机
Dec 27 Python
详解Python 正则表达式模块
Nov 05 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python程序控制NAO机器人行走
Apr 29 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
对python中return与yield的区别详解
Mar 12 Python
python实现扫雷游戏的示例
Oct 20 Python
pycharm配置QtDesigner的超详细方法
Jan 25 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python实现网站注册验证码生成类
2017/06/08 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python生成随机红包的实例写法
2019/09/02 Python
tensorflow常用函数API介绍
2020/04/19 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
python 实现表情识别
2020/11/21 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物