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实现把数字转换成中文
Jun 29 Python
Python聊天室实例程序分享
Jan 05 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
python树的同构学习笔记
Sep 14 Python
Python中Subprocess的不同函数解析
Dec 10 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Linux下python制作名片示例
2018/07/20 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python实现银行管理系统
2019/10/25 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
python如何实现word批量转HTML
2020/09/30 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
《少年王勃》教学反思
2014/04/27 职场文书
安全演讲稿大全
2014/05/09 职场文书
村庄环境整治方案
2014/05/15 职场文书
环境卫生标语
2014/06/09 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python