matplotlib模块数据可视化-多图布局,分格显示

本文介绍了使用Matplotlib库在Python中创建复杂图表布局的三种方法:使用subplot2grid灵活定位子图,利用gridspec模块进行高级网格配置,以及通过subplots快速搭建统一布局的图表组。每种方法都附带了示例代码和展示效果。

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

1 通过subplot2grid实现

1.1 源码

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
# 通过栅格的形式创建布局方式,(3,3)创建3x3的布局形式,(0,0)绘制的位置,0行0列的位置绘制
# colspan:表示跨几列 rowspan:表示跨几行
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
# 在ax1图中绘制一条坐标(1,1)到坐标(2,2)的线段
ax1.plot([1, 2], [1, 2])
# 设置ax1的标题  现在xlim、ylim、xlabel、ylabel等所有属性现在只能通过set_属性名的方法设置
ax1.set_title('ax1_title')  # 设置小图的标题

ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))
# 给对应的图绘制内容,这里只给ax4图绘制,属性通过set_xxx的模式设置
ax4.scatter([1, 2], [2, 2])
ax4.set_xlabel('ax4_x')
ax4.set_ylabel('ax4_y')
plt.show()

1.2 效果图



2 通过gridspec实现

2.1 源码

import numpy as np
import matplotlib.pyplot as plt
# 需要导入该模块
import matplotlib.gridspec as gridspec
plt.figure()
# 将整个视图分成3x3布局
gs = gridspec.GridSpec(3, 3)
# gs[0,:]  指定画图的位置 前面指定该图所占的行范围0表示0行,1: 表示从第一行到最后一行
# 第二个参数指定列的范围一个数表示固定列数,x:y表示从x列到y列
ax6 = plt.subplot(gs[0, :])
ax6.plot((0,1),(0,1))
# 第一行,从0列开始到2列,不包括2,也就是占0、1两列
ax7 = plt.subplot(gs[1, :2])
# 从第一行到最后,占1、2两行,后面的2表示只占用第二列,也就是最后的一列
ax8 = plt.subplot(gs[1:, 2])
# 倒数第一行,只占第0列这一列
ax9 = plt.subplot(gs[-1, 0])
# 倒数第一行,只占倒数第二列,由于总共三列,所以倒数第二列就是序号1的列
ax10 = plt.subplot(gs[-1, -2])
plt.show()

2.2 效果图



3 通过subplots实现

3.1 源码

在matplotlib1.3.1不显示图像内容,在2.0.2中正常显示。

import numpy as np
import matplotlib.pyplot as plt
# 这种方法只适合列数相同的布局
# sharex:所有小图共享x轴  sharey:表示所有小图共享y轴  坐标轴以所有小图中范围最大的进行显示
f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax11.scatter([1,2], [1,2])
ax12.plot((1,4),(1,4))
# 紧凑显示,边框会比较小,可以注释掉该行查看效果
plt.tight_layout()
plt.show()

3.2 效果图



### 关于 Matplotlib 数据可视化的教程 #### 1. 基础概念 Matplotlib 是 Python 中最流行的二维绘图库之一,能够生成高质量的图表用于数据分析和科学计算。其核心功能在于支持种类型的图表绘制,包括折线图、柱状图、散点图、饼图等[^2]。 为了使图表更加清晰易读,在处理中文字符时需要注意设置字体以解决乱码问题。可以通过如下代码配置中文字体和支持负号显示: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'SimHei' # 黑体字库 plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示异常的问题 ``` #### 2. 安装与导入 在使用 Matplotlib 进行数据可视化之前,需确保已正确安装该库。如果尚未安装,可通过 pip 工具完成安装: ```bash pip install matplotlib ``` 随后可以在脚本或 Jupyter Notebook 中引入模块并测试简单绘图功能: ```python import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.show() ``` #### 3. 基础绘图方法 以下是几种常见的图表及其对应的绘制方式: ##### 折线图 (Line Chart) 利用 `plot` 函数可快速创建一条或条连续曲线表示变量间的关系。 ```python x = range(10) y = [xi**2 for xi in x] plt.plot(x, y, label='二次函数') plt.xlabel('X轴') # 添加 X 轴描述 plt.ylabel('Y轴') # 添加 Y 轴描述 plt.title('简单的折线图') # 设置标题 plt.legend() # 展示图例 plt.grid(True) # 启用网格辅助阅读 plt.show() ``` ##### 柱状图 (Bar Chart) 当需要对比不同类别下的数值大小时,可以选择柱形图作为表现形式。 ```python categories = ['A', 'B', 'C'] values = [12, 24, 36] plt.bar(categories, values, color=['red', 'green', 'blue']) plt.title('分类比较') plt.show() ``` ##### 散点图 (Scatter Plot) 对于展现两组离散型数据之间的分布规律非常有用。 ```python from numpy import random n_points = 100 xs = random.rand(n_points)*100 ys = xs*random.randn(n_points)+50 plt.scatter(xs, ys, c=random.rand(n_points), alpha=0.5) plt.colorbar(label='随机颜色值') plt.show() ``` #### 4. 高级特性 除了上述基础操作外,还可以进一步调整样式、布局等方面提升最终成果的专业度。例如定义主题风格、添加子图分区或者导出文件等功能均属于此类范畴[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值