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远程登录代码
Apr 29 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
Python闭包思想与用法浅析
Dec 27 Python
浅谈python 中类属性共享的问题
Jul 02 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
Python configparser模块应用过程解析
Aug 14 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 session的传递方式
2016/06/15 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
Safari5中alert的无限循环BUG
2011/04/07 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
对python 自定义协议的方法详解
2019/02/13 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
施工人员岗位职责
2013/12/12 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
员工趣味活动方案
2014/08/27 职场文书
个人优缺点总结
2015/02/28 职场文书
初中毕业生自我评价
2015/03/02 职场文书
党员转正申请报告
2015/05/15 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers