matplotlib 小用法

本文介绍如何利用Python的Matplotlib库绘制正弦函数图形,以及如何使用NumPy和scikit-learn库可视化数据集。首先,我们通过NumPy生成正弦函数的数据点并用Matplotlib将其可视化。随后,我们加载scikit-learn中的数字数据集,探索其结构,并使用Matplotlib绘制样本图像。

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

1 - 加入代码

import matplotlib as plt

2 - 第一个正弦函数

假设想要画出正弦函数sin(x)的线性图。得到函数在x坐标轴上0 ≤ x<10内所有点的值。我们将使用 NumPy 中的 linspace 函数来在x坐标轴上创建一个从0到10的线性空间,以及100个采样点:

import numpy as np
x = np.linspace( 0, 10, 100 )

可以使用 NumPy 中的sin函数得到所有x点的值,并通过调用plt中的plot函数把结果画出来:

plt.plot(x, np.sin(x)) 
plt.show()

让我们对外部数据集进行可视化,比如scikit-learn中的数字数据集。

3 - 批量可视化

需要三个可视化工具:

  • scikit-learn用于获取实际数据
  • NumPy 用于数据再加工
  • Matplotlib

那么开始引入这些包吧:

import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt

第一步是载入实际数据:

digits = datasets.load_digits()

如果没记错的话,digits应该有两个不同的数据域:data域包含了真正的图像数据,target域包含了图像的标签。相对于相信我们的记忆,我们还是应该对digits稍加探索。输入它的名字,添加一个点号,然后按Tab键:digits.,这个操作将向我们展示digits也包含了一些其他的域,比如一个名为images的域。images和data这两个域,似乎简单从形状上就可以区分。

print(digits.data.shape)
print(digits.images.shape)

两种情况中,第一维对应的都是数据集中的图像数量。然而,data中所有像素都在一个大的向量中排列,而images保留了各个图像8×8的空间排列。

因此,如果想要绘制出一副单独的图像,使用images将更加合适。首先,使用NumPy的数组切片从数据集中获取一幅图像:

img = digits.images[0, :, :]

这里是从1797个元素的数组中获取了它的第一行数据,这行数据对应的是8×8=64个像素。下面就可以使用plt中的imshow函数来绘制这幅图像:

plt.imshow(img, cmap= 'gray')

此外,这里也使用cmap参数指定了一个颜色映射。默认情况下,Matplotlib 使用MATLAB默认的颜色映射jet。然而,在灰度图像的情况下,gray颜色映射更有效。

最后,可以使用plt的subplot函数绘制全部数字的样例。subplot函数与MATLAB中的函数一样,需要指定行数、列数以及当前的子绘图索引(从1开始计算)。我们将使用for 循环在数据集中迭代出前十张图像,每张图像都分配到一个单独的子绘图中。

for image_index in range(10):
	subplot_index = image_index + 1
	plt.subplot( 2, 5, subplot_index)
	plt.imshow(digits.images[image_index, :, :], cmap= 'gray') 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值