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调用windows api锁定计算机示例
Apr 17 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
对于Python中线程问题的简单讲解
Apr 03 Python
python基础教程之分支、循环简单用法
Jun 16 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
python实现Adapter模式实例代码
Feb 09 Python
python脚本实现验证码识别
Jun 07 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
用python查找统一局域网下ip对应的mac地址
Jan 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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
一段实用的php验证码函数
2016/05/19 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
CSS和Javascript简单复习资料
2010/06/29 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
Javascript的this用法
2017/01/16 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
python使用celery实现异步任务执行的例子
2019/08/28 Python
Python中if有多个条件处理方法
2020/02/26 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
数控技校生自我鉴定
2014/03/02 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
离职感谢信怎么写
2015/01/22 职场文书
病人慰问信范文
2015/02/15 职场文书
新闻稿怎么写
2015/07/18 职场文书
诚实守信主题班会
2015/08/13 职场文书
学术会议开幕词
2016/03/03 职场文书
React自定义hook的方法
2022/06/25 Javascript
python 镜像环境搭建总结
2022/09/23 Python