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 图片验证码代码
Dec 07 Python
Python中的生成器和yield详细介绍
Jan 09 Python
Python使用Supervisor来管理进程的方法
May 28 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python实现学生信息管理系统
Apr 05 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python缩进长度是否统一
Aug 02 Python
使用numpy nonzero 找出非0元素
May 14 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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 Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JS中Location使用详解
2015/05/12 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
vue + axios get下载文件功能
2019/09/25 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
你应该知道的python列表去重方法
2017/01/17 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
委托书范本
2014/09/13 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
北京天坛导游词
2015/02/12 职场文书
拖欠货款起诉状
2015/05/20 职场文书
关于五一放假的通知
2015/08/18 职场文书
基于python实现银行管理系统
2021/04/20 Python