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中将阿拉伯数字转换成中文的实现代码
May 19 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
opencv python 傅里叶变换的使用
Jul 21 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python中常用的8种字符串操作方法
May 06 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Python调用.net动态库实现过程解析
Jun 05 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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设计模式 Strategy(策略模式)
2011/06/26 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Python运算符重载详解及实例代码
2017/03/07 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
python实现用户答题功能
2018/01/17 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
关于Python的一些学习总结
2018/05/25 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
详解Python3中ceil()函数用法
2019/02/19 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
DELPHI面试题研发笔试试卷
2015/11/08 面试题
餐厅销售主管职责范本
2014/02/19 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
思想道德自我评价2015
2015/03/09 职场文书
环保建议书范文
2015/09/14 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
Python list去重且保持原顺序不变的方法
2021/04/03 Python
浅谈Redis在直播场景的实践方案
2021/04/27 Redis