图形对象函数figure() 及 子图创建函数subplot()

本文详细介绍了matplotlib中的figure()函数和subplot()方法。figure()用于创建图形对象,可以设置图形大小、分辨率等属性。subplot()则用于创建子图,支持多行多列布局,可以通过参数指定位置。此外,文章还提到了格栅布局和自由布局的使用方法,以及tight_layout()用于优化图形间的间距。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 图像对象创建函数figure

创建图形Creates a new figure,

图形名既可以作为显示在图形窗口标题栏中的文本,也是该对象的名称

也可以通过mp.figure()获取(或激活)已创建的图形

 

1.1 语法

plt.figure(num=None, 
           figsize=None,
           dpi=None,
           facecolor=None,
           edgecolor=None,
           frameon=True,
           FigureClass=<class 'matplotlib.figure.Figure'>,
           clear=False,
           **kwargs
)

参数:

num - 整数或字符串,optional。默认值None,

         若无,则创建一个新图形,图形编号(数字)递增,同时将数字保存在number属性中;

         若提供了num值,系统首先检测该num值(整数或字符串)是否存在,存在则将其设置为活动状态,同时返回对他的应用,若不存在,创建图形并返回它

         但是,数字和字符串不同,数字为编号(不会显示在图形中,其内部的编号),字符串为图形名称

figsize - tuple of integers , 指定figure的宽和高,单位为英寸 ,若无提供,defaults to rc figure.figsize.

dpi - 图形的分辨率,int,optinal,若缺省,则defaults to rc figure.dpi.

faceclor - 背景色,若缺省,则 defaults to rc figure.facecolor.

edgecolor - 边框颜色,若缺省,则 defaults to rc figure.edgecolor.

frameon - 布尔值bool,optional ,默认True(绘制边框),若False,则不绘制边框

clear - 布尔值bool,optional,默认False,若True,且该图已存在,则会将其清除并重新绘制

FigureClass - matplotlib.figure.Figure的派生类,optional,使用自定义图形实例

 1.2 图形示例

import numpy as np
import matplotlib.pyplot as mp

x = np.linspace(-np.pi, np.pi, 200)
cos_y = np.cos(x)
sin_y = np.sin(x)

# 创建图形对象
mp.figure('Figure Object 1', 
          figsize=(4, 3), dpi=120,
          facecolor='lightgray')

# 设置标题
mp.title('Figure Object 1', fontsize=14)

# 设置坐标轴标签
mp.xlabel('x', fontsize=10)
mp.ylabel('y', fontsize=10)

# 设置刻度标签参数大小
mp.tick_params(labelsize=8)

# 设置网格线
mp.grid(linestyle=':')


# 创建图形 2 对象
mp.figure('Figure Object 2', 
          figsize=(4, 3), dpi=120,
          facecolor='lightgray
### Matplotlib Subplot 消失解决方案 当遇到 `matplotlib` 的subplot)无法正常显示或似乎“消失”的情况时,通常是因为布局设置不当或是某些参数配置错误。为了确保能够正确呈现并防止其被裁剪或隐藏,可以采取以下措施: #### 使用 `tight_layout()` 调整形布局 通过调用 `fig.tight_layout()` 函数来优化多个间的间距和位置关系,从而避免因默认布局导致的内容重叠或截断现象[^2]。 ```python import matplotlib.pyplot as plt # 创建一个新的像对象 fig = plt.figure() # 添加三个纵向排列的 for i in range(1, 4): ax = fig.add_subplot(3, 1, i) ax.plot([0, 1], [i, i]) # 绘制简单线条作为示例数据 # 应用 tight_layout 来改善整体布局效果 plt.tight_layout() plt.show() ``` 此方法会自动计算最佳的内边距 (`pad`) 和各间水平(`w_pad`)、垂直方向上的间隔(`h_pad`) ,以保证所有元素都能清晰可见而不发生冲突。 #### 设置合适的尺寸比例 如果发现即使应用了上述调整仍然存在问题,则可能是由于整个表窗口的比例不合适造成的。此时可以通过指定更合理的宽度和高度值给 `figure()` 方法中的 `figsize` 参数来进行修正: ```python fig = plt.figure(figsize=(8, 6)) ``` 这一步骤有助于确保有足够的空间容纳所有的和其他附加组件,比如标题、刻度标记等。 #### 验证创建逻辑 另外值得注意的是,在构建复杂的多层嵌套结构时要特别小心处理好每一个级别的索引编号;例如在一个网格状分布下的某一层级里新增加了一个额外的小格可能会引起原有布局的变化甚至破坏原有的设计意。因此建议仔细检查每一处涉及到坐标系实例化的地方是否准确无误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值