python matplotlib中的subplot函数使用详解


Posted in Python onJanuary 19, 2020

python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了一个总结,最后写了一个例子,以后基本不用怎么改了。

一、作图流程:

1.准备数据, , 3作图, 4定制, 5保存, 6显示

1.数据可以是numpy数组,也可以是list

2创建画布:

import matplotlib.pyplot as plt
#figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
 
#num:图像编号或名称,数字为编号 ,字符串为名称
#figsize:指定figure的宽和高,单位为英寸;
#dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 ,1英寸等于2.5cm,A4纸是 21*30cm的纸张 
#facecolor:背景颜色
#edgecolor:边框颜色
#frameon:是否显示边
 
fig = plt.figure()
fig = plt.figure(figsize=(8,6), dpi=80) 
 
fig.add_axes()
fig, axes = plt.subplos(nrows = 2, ncols = 2) #axes是长度为4的列表

3、作图路线

一维数据:

axes[0, 0].plot(x, y)
axes[0,1].bar([1,2,3], [2,4,8])
axes[0,2].barh([1,2,3], [2,4,8])
axes[1,0].axhline(0.45)
axes[1, 1].scatter(x, y)
axes[1,2].axvline(0.65)
axes[2,0].fill(x,y, color = 'blue')
axes[2,1].fill_between(x,y, color = 'blue')
axes[2,2].violinplot(y)
axes[0,3].arrow(0,0,0.5,0.5)
axes[1,3].quiver(x,y)

4, 定制

plt.plot(x,y, alpha=0.4, c = 'blue', maker = 'o')
#颜色,标记,透明度
 
# 显示数学文本
 
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
 
plt.plot(t,s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
     fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
 
fig = plt.figure()
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
 
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)
ax.set_title('axes title')
 
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
 
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
    bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
 
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
 
ax.text(3, 2, u'unicode: Institut f\374r Festk\366rperphysik')
 
ax.text(0.95, 0.01, 'colored text in axes coords',
    verticalalignment='bottom', horizontalalignment='right',
    transform=ax.transAxes,
    color='green', fontsize=15)
 
 
ax.plot([2], [1], 'o')
 
 
# 注释
ax.annotate('我是注释啦', xy=(2, 1), xytext=(3, 4),color='r',size=15,
      arrowprops=dict(facecolor='g', shrink=0.05))
 
ax.axis([0, 10, 0, 10])

python matplotlib中的subplot函数使用详解

5, 保存显示

plt.savefig("1.png")
plt.savefig("1.png", trainsparent =True)
plt.show()

二、部分函数使用详解:

1, fig.add_subplot(numrows, numcols, fignum) ####三个参数,分别代表子图的行数,列数,图索引号。 eg: ax = fig.add_subplot(2, 3, 1) (or ,ax = fig.add_subplot(231))

2, plt.subplots()使用

x = np.linspace(0, 2*np.pi,400)
y = np.sin(x**2)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
 
# Creates two subplots and unpacks the output array immediately 
#fig = plt.figure(figsize=(6,6))
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
 
# Creates four polar axes, and accesses them through the returned array
fig, axes = plt.subplots(2, 2, subplot_kw=dict(polar=True))
axes[0, 0].plot(x, y)
axes[1, 1].scatter(x, y)
 
# Share a X axis with each column of subplots
plt.subplots(2, 2, sharex='col')
 
# Share a Y axis with each row of subplots
plt.subplots(2, 2, sharey='row')
 
# Share both X and Y axes with all subplots
plt.subplots(2, 2, sharex='all', sharey='all')
 
# Note that this is the same as
plt.subplots(2, 2, sharex=True, sharey=True)
 
# Creates figure number 10 with a single subplot
# and clears it if it already exists.
fig, ax=plt.subplots(num=10, clear=True)

3.plt.legend()

plt.legend(loc='String or Number', bbox_to_anchor=(num1, num2))
plt.legend(loc='upper center', bbox_to_anchor (0.6,0.95),ncol=3,fancybox=True,shadow=True)
#bbox_to_anchor被赋予的二元组中,第一个数值用于控制legend的左右移动,值越大越向右边移动,第二个数值用于控制legend的上下移动,值越大,越向上移动

python matplotlib中的subplot函数使用详解

以上这篇python matplotlib中的subplot函数使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
python实现顺时针打印矩阵
Mar 02 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
在django view中给form传入参数的例子
Jul 19 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 #Python
Python实现序列化及csv文件读取
Jan 19 #Python
使用python turtle画高达
Jan 19 #Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 #Python
python实现五子棋游戏(pygame版)
Jan 19 #Python
Python turtle画图库&&画姓名实例
Jan 19 #Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 #Python
You might like
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
基于empty函数的输出详解
2013/06/17 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
改变隐藏的input中value的值代码
2013/12/30 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python代码实现猜拳小游戏
2020/11/30 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
高三学习决心书
2014/03/11 职场文书
开门红主持词
2014/04/02 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
奔腾年代观后感
2015/06/09 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android