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通过pil模块获得图片exif信息的方法
Mar 16 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
Python如何省略括号方法详解
Mar 21 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Python 如何实现数据库表结构同步
Sep 29 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
使用python如何删除同一文件夹下相似的图片
May 07 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
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
php数组查找函数总结
2014/11/18 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
python记录程序运行时间的三种方法
2017/07/14 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
详解如何设置Python环境变量?
2019/05/13 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
在python image 中实现安装中文字体
2020/05/16 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
你所在的项目是如何确定版本号的
2015/12/28 面试题
员工考核评语大全
2014/04/26 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python