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读取Android permission文件
Nov 01 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python利用IPython提高开发效率
Aug 10 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
django中瀑布流写法实例代码
Oct 14 Python
centos7中安装python3.6.4的教程
Dec 11 Python
Python批量启动多线程代码实例
Feb 18 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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安装全攻略:APACHE
2006/10/09 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery 选择器理解
2010/03/16 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
介绍Python中几个常用的类方法
2015/04/08 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
对python生成业务报表的实例详解
2019/02/03 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
办公室秘书自我鉴定
2014/01/18 职场文书
建设工程授权委托书
2014/09/22 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
南京大屠杀观后感
2015/06/02 职场文书
《静夜思》教学反思
2016/02/17 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电