专栏首页大数据建模的一点一滴Matplotlib | 创建图形(figure)对象

Matplotlib | 创建图形(figure)对象

Matplotlib中有多种创建图形对象的方法,常用到的有三种,下面直接举例子说明。

一、add_subplot方法

(1)首先创建图形对象fig1,然后通过add_subplot命令在fig1中建立4个子图形,最后在每个子图形中进行各自的绘图操作。

import numpy as np
from numpy.random import randn
import matplotlib.pyplot as plt
# 创建Figure对象fig1
fig1 = plt.figure() 
# 在fig1中创建子图形
ax1 =fig1.add_subplot(2, 2, 1)
ax2 =fig1.add_subplot(2, 2, 2)
ax3 =fig1.add_subplot(2, 2, 3)
ax4 =fig1.add_subplot(2, 2, 4)
# 调用实例方法在相应的子图中绘图
ax1.plot(randn(30).cumsum(), 'g--')
ax2.hist(randn(1000), bins=10, color='k', alpha=0.5)
ax3.scatter(np.arange(20), np.arange(20) + randn(20))

绘图结果如下,其中子图4未执行任何绘图命令,所以是空白:

(2)多图形对象放一起,如创建fig1和fig2,每个图形中包含4个子图。

# 创建Figure对象fig1
fig1 = plt.figure() 
# 在fig1中创建子图形
ax1 =fig1.add_subplot(2, 2, 1)
ax2 =fig1.add_subplot(2, 2, 2)
ax3 =fig1.add_subplot(2, 2, 3)
ax4 =fig1.add_subplot(2, 2, 4)
# 调用实例方法在相应的子图中绘图
ax1.plot(randn(30).cumsum(), 'g--')
ax2.hist(randn(1000), bins=10, color='k', alpha=0.5)
ax3.scatter(np.arange(20), np.arange(20) + randn(20))

# 创建Figure对象fig2
fig2 = plt.figure() 
# 在fig2中创建子图形
ax1 =fig2.add_subplot(2, 2, 1)
ax2 =fig2.add_subplot(2, 2, 2)
ax3 =fig2.add_subplot(2, 2, 3)
ax4 =fig2.add_subplot(2, 2, 4)
# 调用实例方法在相应的子图中绘图
ax1.plot(randn(50).cumsum(), 'r--')
ax2.hist(randn(1000), bins=20, color='g', alpha=0.5)
ax3.scatter(np.arange(30), np.arange(30) + randn(30))

绘图如下:

二、subplot方法

(1)命令plt.subplot(221),在当前图形对象中创建(2行)*(2列) 的子图结构,并指向第一个子图。

# 创建第一个图形对象
plt.figure(1)   
# 第一个图形的第一个子图 
plt.subplot(221)                               
plt.plot(randn(30).cumsum(), 'g--')  
# 第一个图形的第二个子图         
plt.subplot(222)                               
plt.hist(randn(1000), bins=10, color='k', alpha=0.5)
# 第一个图形的第三个子图
plt.subplot(223)
plt.scatter(np.arange(20), np.arange(20) + randn(20))
# 第一个图形的第四个子图,不执行任何绘图命令,是空图
plt.subplot(224)

绘图如下:

(2)多图形对象放一起

# 创建第一个图形对象
plt.figure(1)   
# 第一个图形的第一个子图 
plt.subplot(221)                               
plt.plot(randn(30).cumsum(), 'g--')  
# 第一个图形的第二个子图         
plt.subplot(222)                               
plt.hist(randn(1000), bins=10, color='k', alpha=0.5)
# 第一个图形的第三个子图
plt.subplot(223)
plt.scatter(np.arange(20), np.arange(20) + randn(20))
# 第一个图形的第四个子图
plt.subplot(224)

# 创建第二个图形对象
plt.figure(2)
# 第二个图形的第一个子图 
plt.subplot(221)
plt.plot(randn(50).cumsum(), 'r--')
# 第二个图形的第二个子图 
plt.subplot(222)
plt.hist(randn(1000), bins=20, color='g', alpha=0.5)
plt.subplot(223)
# 第二个图形的第三个子图 
plt.scatter(np.arange(30), np.arange(30) + randn(30))
# 第二个图形的第四个子图 
plt.subplot(224)

绘图如下:

三、subplots方法

命令fig, axes = plt.subplots(2, 2),创建图形对象fig,及对应的(2行)*(2列) 子图矩阵axes,其中axes[0, 0]代表第一行第一列的子图,以此类推。

fig1, axes1 = plt.subplots(2, 2)
axes1[0, 0].plot(randn(30).cumsum(), 'g--')
axes1[0, 1].hist(randn(1000), bins=10, color='k', alpha=0.5)
axes1[1, 0].scatter(np.arange(20), np.arange(20) + randn(20))

fig2, axes2 = plt.subplots(2, 2)
axes2[0, 0].plot(randn(50).cumsum(), 'r--')
axes2[0, 1].hist(randn(1000), bins=20, color='g', alpha=0.5)
axes2[1, 0].scatter(np.arange(30), np.arange(30) + randn(30))

绘图如下:

四、一个图形对象只包含一个子图的情况

最简洁的方式是直接执行下面的绘图命令,该命令默认创建一个图形对象,同时图形对象只包含一个子图:

plt.plot(randn(30).cumsum(), 'g--')

其等价于以下写法:

plt.figure(1)   
plt.subplot(111)                               
plt.plot(randn(30).cumsum(), 'g--')

绘图如下:

本文分享自微信公众号 - 大数据建模的一点一滴(bigdatamodeling),作者:小石头

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 算法 | 决策树

    决策树是一种基本学习方法,可用于回归和分类。回归树的分割准则一般是平均误差,而分类树的分割准则有信息增益、信息增益率、基尼指数等,下面简单梳理决策...

    小石头
  • 模型评估 | R语言实现ROC

    上一篇是关于ROC的含义及Python的实现,现在通过R来实现ROC,实现逻辑完全一样。

    小石头
  • 特征工程 | PCA降维

    主成分分析(PCA)是一种多元统计方法,主要利用降维的思想,在损失很少信息的前提下,把多个变量转化为少数几个互不相关的综合变量,各综合变量即称为主成...

    小石头
  • 使用Numpy和Opencv完成图像的基本数据分析(Part III)

    本文是使用python进行图像基本处理系列的第三部分,在本人之前的文章里介绍了一些非常基本的图像分析操作,见文章《使用Numpy和Opencv完成...

    用户3578099
  • 奥克兰政府将打造国际化AR/VR中心

    VRPinea
  • VR/AR+博物馆丨全新的“历史长廊”漫游体验Pick一下?

    博物馆对人类来说是十分有意义的,通过各种博物馆人们能够体验到世界文化的宝贵财富。而随着虚拟现实技术的发展,VR/AR博物馆也闯入了人们的眼球,给人们带来了新的体...

    VRPinea
  • 首届长三角虚拟现实内容产业大赛火爆开赛|助力幻梦云端,实现虚拟变现

    虚拟现实及相关技术被认为是下一代互联网入口,产业发展的技术储备和产业基础条件日益成熟。随着5G技术的发展,XR产业将迎来新一轮爆发,当前制约其的瓶颈在于缺少优质...

    VRPinea
  • photoshop 填充以及描边功能

    上一篇photoshop 选区操作介绍基本介绍了选区的使用方式,也简单介绍了一下填充的做法,那么本篇章再具体讲下选区之后的填充以及描边这两个功能。

    Devops海洋的渔夫
  • 使用Python读写文本文件内容

    本文主要演示如何读写文本文件的内容,以及上下文管理语句with的用法。使用上下文管理语句with时,即使在操作文件内容时引发异常也能保证文件被正确关闭。 #'w...

    Python小屋屋主
  • Kafka Zero-Copy 使用分析

    Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个

    用户2936994

扫码关注云+社区

领取腾讯云代金券