plt.figure()的使用

本文详细介绍了使用Matplotlib进行绘图的基本方法,包括figure、subplot、subplots的使用,以及如何通过面向对象API添加子图和自定义绘图区域。通过实例展示了不同绘图命令的效果,适合初学者快速掌握Matplotlib绘图技巧。

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/m0_37362454/article/details/81511427
1.figure语法及操作

(1)figure语法说明

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:是否显示边框
(2)例子:

import matplotlib.pyplot as plt
创建自定义图像
fig=plt.figure(figsize=(4,3),facecolor='blue')
plt.show()

2.subplot创建单个子图

(1) subplot语法

subplot(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)

 

 

subplot可以规划figure划分为n个子图,但每条subplot命令只会创建一个子图 ,参考下面例子。

 

(2)例子

import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  
#作图1
plt.subplot(221)  
plt.plot(x, x)  
#作图2
plt.subplot(222)  
plt.plot(x, -x)  
 #作图3
plt.subplot(223)  
plt.plot(x, x ** 2)  
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
plt.subplot(224)  
plt.plot(x, np.log(x))  
plt.show()  

 

 

3.subplots创建多个子图

(1)subplots语法

subplots参数与subplots相似

 

(2)例子

import numpy as np  
import matplotlib.pyplot as plt

x = np.arange(0, 100)  
#划分子图
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]


#作图1
ax1.plot(x, x)  
#作图2
ax2.plot(x, -x)
 #作图3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
ax4.plot(x, np.log(x))  
plt.show() 

 

 

 

 

4.面向对象API:add_subplots与add_axes新增子图或区域

add_subplot与add_axes都是面对象figure编程的,pyplot api中没有此命令

 

(1)add_subplot新增子图

add_subplot的参数与subplots的相似

 

import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  
#新建figure对象
fig=plt.figure()
#新建子图1
ax1=fig.add_subplot(2,2,1)      
ax1.plot(x, x) 
#新建子图3
ax3=fig.add_subplot(2,2,3)
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#新建子图4
ax4=fig.add_subplot(2,2,4)
ax4.plot(x, np.log(x))  
plt.show()

 

 

 

可以用来做一些子图。。。图中图。。。

(2)add_axes新增子区域

add_axes为新增子区域,该区域可以座落在figure内任意位置,且该区域可任意设置大小

add_axes参数可参考官方文档:http://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure

 

import numpy as np  
import matplotlib.pyplot as plt  

#新建figure
fig = plt.figure()
# 定义数据

 

x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]
#新建区域ax1

 

#figure的百分比,从figure 10%的位置开始绘制, 宽高是figure的80%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r')
ax1.set_title('area1')

 

 

 


#新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x,y, 'b')
ax2.set_title('area2')
plt.show() 

 


————————————————
版权声明:本文为优快云博主「欧阳小俊」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_37362454/article/details/81511427

 

<think> 我们讨论的是matplotlib中的两个概念:`plt.Figure`和`plt.figure`。它们虽然名称相似,但在使用上有所不同。 ### 1. `plt.figure`函数 `plt.figure`是matplotlib的pyplot模块中的一个函数,用于创建一个新的图形(Figure)或激活一个已有的图形。它返回一个`matplotlib.figure.Figure`实例。 **用法示例**: ```python import matplotlib.pyplot as plt # 创建一个新的图形,设置大小和背景色 fig = plt.figure(figsize=(8, 6), facecolor='lightblue') ``` **参数说明**: - `figsize`:指定图形的宽和高(单位为英寸),是一个元组,如`(宽度, 高度)` - `facecolor`:背景颜色 - `edgecolor`:边框颜色 - `num`:图形标识(数字或字符串) - 其他参数:如`dpi`(分辨率),`frameon`(是否显示边框)等 ### 2. `plt.Figure`类 `plt.Figure`实际上是指`matplotlib.figure.Figure`类。它是图形对象的类型,代表一个完整的图形区域。通常我们不直接实例化`Figure`类,而是通过`plt.figure()`函数或`plt.subplots()`函数来创建。 **直接使用Figure类的示例**: ```python from matplotlib.figure import Figure from matplotlib.backends.backend_agg import FigureCanvasAgg # 直接创建Figure实例 fig = Figure(figsize=(8, 6)) # 添加子图 ax = fig.add_subplot(111) ax.plot([1,2,3], [4,5,6]) # 如果需要显示,通常需要关联一个画布(canvas) # 在交互式环境中(如Spyder),通常不需要以下步骤,因为plt.show()会自动处理 canvas = FigureCanvasAgg(fig) canvas.draw() # 保存图像 fig.savefig('figure.png') ``` ### 3. 区别总结 | 特性 | `plt.figure` (函数) | `plt.Figure` (类) | |----------------|-----------------------------|---------------------------| | **性质** | 用于创建图形的函数 | 代表图形对象的类 | | **使用场景** | 在pyplot风格编程中常用 | 在面向对象编程或需要更精细控制时使用 | | **返回值** | 返回一个Figure实例 | 直接实例化该类得到Figure对象 | | **创建方式** | 通过函数调用创建 | 通过类构造函数创建 | | **是否需要画布**| 自动关联画布(由pyplot管理)| 需要手动关联画布(在非pyplot环境下) | ### 4. 使用建议 - 对于一般的绘图,使用`plt.figure`即可,因为它与pyplot的其他函数(如`plt.plot`、`plt.subplot`)配合良好。 - 在需要更复杂的图形控制、嵌入到GUI应用程序或生成不显示而直接保存的图像时,可以直接使用`Figure`类。 ### 5. 示例对比 **使用`plt.figure`**(推荐在脚本中使用): ```python import matplotlib.pyplot as plt plt.figure(figsize=(8, 6)) plt.plot([1,2,3], [4,5,1]) plt.title('使用plt.figure') plt.show() ``` **直接使用`Figure`类**(面向对象风格): ```python from matplotlib.figure import Figure from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas fig = Figure(figsize=(8,6)) ax = fig.add_subplot(111) ax.plot([1,2,3], [4,5,1]) ax.set_title('使用Figure类') # 保存图形 fig.savefig('figure.png') # 如果要在Spyder中显示,可以使用以下方法(但通常plt.show()更简单) # 在非交互式环境中,可能需要先创建画布 canvas = FigureCanvas(fig) canvas.draw() # 然后可以使用matplotlib的图像显示方法,但通常直接保存或通过plt显示 ``` ### 6. 在Spyder中显示图形 无论使用哪种方式创建图形,在Spyder中都可以通过`plt.show()`来显示图形。但是,当直接使用`Figure`类创建图形时,如果未与当前pyplot关联,可能需要先执行: ```python import matplotlib.pyplot as plt plt.show() ``` ### 7. 引用说明 在创建图形时,使用`plt.figure(figsize=(宽度, 高度))`可以调整图形大小,如引用[4]所示[^4]。而引用[2]和引用[3]则展示了直接使用`plt.figure`创建自定义图形的方法[^2][^3]。 §§相关问题§§ 1. 如何在matplotlib中创建多个子图? 2. 如何调整matplotlib子图之间的间距? 3. 如何保存高分辨率的matplotlib图像? 4. 在非交互式环境下如何使用matplotlib绘图? </think>在Matplotlib中,`plt.Figure`和`plt.figure`都用于创建图形对象,但它们在使用方式和功能上有重要区别: ### 1. `plt.Figure`(类) `plt.Figure`是Matplotlib的核心类,代表整个图形窗口(画布)。通常通过`matplotlib.figure.Figure`直接实例化使用。 **核心特性和用法:** - **面向对象编程风格**:直接创建Figure实例 ```python from matplotlib.figure import Figure # 创建图形对象(不会自动显示) fig = Figure(figsize=(8, 6), dpi=100, facecolor='lightblue') ``` - **需要手动添加坐标轴**: ```python ax = fig.add_subplot(111) # 添加坐标轴 ax.plot([1,2,3], [4,5,6]) ``` - **需要显式关联画布**(在非交互环境): ```python from matplotlib.backends.backend_agg import FigureCanvasAgg canvas = FigureCanvasAgg(fig) # 关联画布 canvas.draw() # 渲染图像 ``` - **优势**:更灵活,适合嵌入GUI应用或生成图像文件 ### 2. `plt.figure`(函数) `plt.figure`是pyplot模块的函数,自动管理图形创建和显示上下文。 **核心特性和用法:** - **命令式编程风格**:自动创建并激活图形 ```python import matplotlib.pyplot as plt # 创建并激活图形(自动显示) fig = plt.figure(figsize=(8, 6), facecolor='lightblue') ``` - **自动坐标轴管理**: ```python plt.plot([1,2,3], [4,5,6]) # 自动使用当前坐标轴 ``` - **自动显示集成**: ```python plt.show() # 直接显示图形 ``` - **优势**:简单快捷,适合交互式环境和脚本 ### 3. 关键区别总结 | 特性 | `plt.Figure` (类) | `plt.figure` (函数) | |---------------------|----------------------------------------|-------------------------------------| | **导入方式** | `from matplotlib.figure import Figure` | `import matplotlib.pyplot as plt` | | **编程风格** | 面向对象 | 命令式 | | **显示集成** | 需要手动关联画布和显示 | 自动集成`plt.show()` | | **坐标轴管理** | 需手动添加(`add_subplot()`) | 自动管理当前坐标轴 | | **使用场景** | GUI嵌入、高级定制、图像生成 | 快速绘图、交互环境、脚本 | | **引用** | 引用[2][^2] | 引用[1][^1], 引用[4][^4] | ### 4. 何时使用哪种方式? - **用`plt.figure`当**: 需要快速绘图或在Jupyter/Spyder等交互环境工作 ```python plt.figure(figsize=(10,5)) plt.plot(x, y) plt.title('快速绘图') plt.show() ``` - **用`plt.Figure`当**: 1. 嵌入GUI应用(如PyQt) 2. 生成图像文件而不显示 3. 需要精细控制图形属性 ```python fig = Figure(figsize=(10,5)) ax = fig.add_subplot(111) ax.plot(x, y) ax.set_title('高级控制') fig.savefig('output.png') # 直接保存 ``` ### 5. 常见问题解决 **为什么在Spyder中图形大小不变?** - 确保使用正确后端(Preferences → IPython → Graphics → Backend: Automatic) - 使用`plt.figure()`而非直接实例化`Figure`类 - 调用`plt.show()`前设置大小: ```python plt.figure(figsize=(10,10)) # 引用[4][^4] plt.scatter(x, y, s=5) plt.show() ``` > **技术说明**:`plt.figure()`函数内部其实是创建了`Figure`类的实例,但额外处理了画布关联和上下文管理,使得在交互环境中更易用[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值