python三大库之—matplotlib
文章目录
一、概念
Matplotlib 库:是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂
Matplotlib 图形组成:
- Figure:指整个图形,您可以把它理解成一张画布,它包括了所有的元素,比如标题、轴线等
- Axes:绘制 2D 图像的实际区域,也称为轴域区,或者绘图区
- Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小(图中轴长为 7)、轴标签(指 x 轴,y轴)和刻度标签
- Artist:您在画布上看到的所有元素都属于 Artist 对象,比如文本对象(title、xlabel、ylabel)、Line2D 对象(用于绘制2D图像)等
二、安装
pip install matplotlib
三,应用场景
数据可视化主要有以下应用场景:
- 企业领域:利用直观多样的图表展示数据,从而为企业决策提供支持
- 股票走势预测:通过对股票涨跌数据的分析,给股民提供更合理化的建议
- 商超产品销售:对客户群体和所购买产品进行数据分析,促使商超制定更好的销售策略
- 预测销量:对产品销量的影响因素进行分析,可以预测出产品的销量走势
四.常用API
4.1 绘图类型
函数名称 | 描述 |
---|---|
Bar | 绘制条形图 |
Barh | 绘制水平条形图 |
Boxplot | 绘制箱型图 |
Hist | 绘制直方图 |
his2d | 绘制2D直方图 |
Pie | 绘制饼状图 |
Plot | 在坐标轴上画线或者标记 |
Polar | 绘制极坐标图 |
Scatter | 绘制x与y的散点图 |
Stackplot | 绘制堆叠图 |
Stem | 用来绘制二维离散数据绘制(又称为火柴图) |
Step | 绘制阶梯图 |
Quiver | 绘制一个二维按箭头 |
4.2 Image 函数
函数名称 | 描述 |
---|---|
Imread | 从文件中读取图像的数据并形成数组 |
Imsave | 将数组另存为图像文件 |
Imshow | 在数轴区域内显示图像 |
4.3 Axis 函数
函数名称 | 描述 |
---|---|
Axes | 在画布(Figure)中添加轴 |
Text | 向轴添加文本 |
Title | 设置当前轴的标题 |
Xlabel | 设置x轴标签 |
Xlim | 获取或者设置x轴区间大小 |
Xscale | 设置x轴缩放比例 |
Xticks | 获取或设置x轴刻标和相应标签 |
Ylabel | 设置y轴的标签 |
Ylim | 获取或设置y轴的区间大小 |
Yscale | 设置y轴的缩放比例 |
Yticks | 获取或设置y轴的刻标和相应标签 |
4.4 Figure 函数
函数名称 | 描述 |
---|---|
Figtext | 在画布上添加文本 |
Figure | 创建一个新画布 |
Show | 显示数字 |
Savefig | 保存当前画布 |
Close | 关闭画布窗口 |
4.5.pylab 模块
pylab 是 matplotlib 中的一个模块,它将 matplotlib.pyplot 和 numpy 的功能组合在一起,使得你可以直接使用 numpy 的函数和 matplotlib.pyplot 的绘图功能,而不需要显式地导入 numpy 和 matplotlib.pyplot。
import matplotlib.pyplot as plt
六,常用函数
6.1 plot 函数
pylab.plot 是一个用于绘制二维图形的函数。它可以根据提供的 x 和 y 数据点绘制线条和/或标记。
- x: x 轴数据,可以是一个数组或列表。
- y: y 轴数据,可以是一个数组或列表。
- format_string: 格式字符串,用于指定线条样式、颜色等。
- **kwargs: 其他关键字参数,用于指定线条的属性。
plot 函数可以接受一个或两个数组作为参数,分别代表 x 和 y 坐标。如果你只提供一个数组,它将默认用作 y 坐标,而 x 坐标将默认为数组的索引。
import matplotlib.pyplot as plt
import numpy as np
import pylab
#第一种绘图方式
def text():
x=np.arange(10)
y=np.array([1,2,3,4,5,6,7,8,9,10])
plt.plot(x,y)
text()
格式字符串:
格式字符串由颜色、标记和线条样式组成。例如:
颜色:
‘b’:蓝色 ‘g’:绿色 ‘r’:红色 ‘c’:青色 ‘m’:洋红色 ‘y’:黄色 ‘k’:黑色 ‘w’:白色
标记:
‘.’:点标记
‘,’:像素标记
‘o’:圆圈标记
‘v’:向下三角标记
‘^’:向上三角标记
‘<’:向左三角标记
‘>’:向右三角标记
‘s’:方形标记
‘p’:五边形标记
‘*’:星形标记
‘h’:六边形标记1
‘H’:六边形标记2
‘+’:加号标记
‘x’:叉号标记
‘D’:菱形标记
‘d’:细菱形标记
‘|’:竖线标记
‘_’:横线标记
线条样式:
‘-’:实线 ‘–’:虚线 ‘-.’:点划线 ‘:’:点线
def text2():
x = pylab.linspace(-6, 6, 40)
y = np.cos(x)
z = np.sin(x)
plt.plot(x,y,'b',)
plt.plot(x,z,'r')
plt.show()
text2()
6.2 figure 函数
figure() 函数来实例化 figure 对象,即绘制图形的对象,可以通过这个对象,来设置图形的样式等
参数:
- figsize:指定画布的大小,(宽度,高度),单位为英寸
- dpi:指定绘图对象的分辨率,即每英寸多少个像素,默认值为80
- facecolor:背景颜色
- dgecolor:边框颜色
- frameon:是否显示边框
6.2.1 figure.add_axes()
Matplotlib 定义了一个 axes 类(轴域类),该类的对象被称为 axes 对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布(figure)中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用。
参数:
是一个包含四个元素的列表或元组,格式为 [left, bottom, width, height],其中:
left 和 bottom 是轴域左下角的坐标,范围从 0 到 1。
width 和 height 是轴域的宽度和高度,范围从 0 到 1。
def text3():
x = pylab.linspace(-6, 6, 40)
y = x**2
z = np.tan (x)
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot([0.1,0.1,0.8,0.8])
ax.plot(x,y,'r:',label='y=x^2函数')
ax.plot(x,z,'b-',label='y=tan(x)函数')
ax.legend()
plt.show()
6.2.2 axes.legend()
legend 函数用于添加图例,以便识别图中的不同数据系列。图例会自动显示每条线或数据集的标签。
参数:
- labels 是一个字符串序列,用来指定标签的名称
- loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示
- handles 参数,它也是一个序列,它包含了所有线型的实例
6.4 subplot 函数
subplot 是一个较早的函数,用于创建并返回一个子图对象。它的使用比较简单,通常用于创建网格状的子图布局。subplot 的参数通常是一个三位数的整数,其中每个数字代表子图的行数、列数和子图的索引。
add_subplot 是一个更灵活的函数,它是 Figure类的一个方法,用于向图形容器中添加子图。推荐使用 add_subplot,因为它提供了更好的灵活性和控制。
def text4():
x= np.linspace(-6,6,40)
y1 =np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig = plt.figure()
ax = fig.add_subplot(2,3,1)
ax.plot(x,y1,'r:')
ax = fig.add_subplot(2,3,2)
ax.plot(x,y1,'r:')
ax = fig.add_subplot(2,3,3)
ax.plot(x,y1,'r:')
plt.show()
6.5 subplots 函数
subplots 是 matplotlib.pyplot 模块中的一个函数,用于创建一个包含多个子图(subplots)的图形窗口。subplots 函数返回一个包含所有子图的数组,这使得你可以更方便地对每个子图进行操作。
def text5():
x= np.linspace(-6,6,40)
y1 =np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig,axs = plt.subplots(3,1)
axs[0].plot(x,y1,'r:',label='sin')
axs[0].legend()
axs[1].plot(x,y2,'g:',label='cos')
axs[1].legend()
axs[2].plot(x,y3,'b:',label='tan')
axs[2].legend()
plt.show()
6.6 图片读取
plt.imread 是 Matplotlib 库中的一个函数,用于读取图像文件并将其转换为 NumPy 数组。这个函数非常方便,可以轻松地将图像加载到 Python 中进行处理或显示。
参数
fname
: 图像文件的路径(字符串)。format
: 图像格式(可选)。如果未指定,imread
会根据文件扩展名自动推断格式。
返回值
- 返回一个 NumPy 数组,表示图像的像素数据。数组的形状取决于图像的格式:
- 对于灰度图像,返回一个二维数组
(height, width)
。 - 对于彩色图像,返回一个三维数组
(height, width, channels)
,其中channels
通常是 3(RGB)或 4(RGBA)。
- 对于灰度图像,返回一个二维数组
def img_read(dirpath, filepath):
dirpath = os.path.dirname(filepath) # 获取文件所在的目录
print(dirpath)
filepath = os.path.realpath(os.path.join(dirpath, 'shupian.jpg')) # 获取文件的完整路径
print(filepath)
img = plt.imread(filepath) # 读取图像
print(img.shape)
plt.imshow(img)
plt.show()
img1 = np.transpose(img, (1, 2, 0)) # 转置图像数组
for channel in img1:
print(channel)
plt.show()
dirpath = 'PYTHON三大库'
filename = 'shupian.jpg'
img_read(dirpath, filename)
F:\hqyj\python三大库代码\shupian.jpg
(800, 800, 3)