目录
- 概述
- [一、pyplot模式(pyplot API):](#一、pyplot模式(pyplot API):)
- [二、面向对象模式(Object-Oriented API):](#二、面向对象模式(Object-Oriented API):)
- 三、创建图表详细流程
-
- (一)创建画布(figure)
- (二)传入x轴和y轴的值(plot)
- (三)添加网格线(grid)
- (四)添加x轴和y轴值范围(xlim/ylim)
-
- 1.格式
- [2. 参数](#2. 参数)
- (五)添加x轴y轴标签(xlabel/ylabel)
-
- [xlabel 函数](#xlabel 函数)
- [ylabel 函数](#ylabel 函数)
- (六)添加标题和绘制图表
- 四、常用图表样式
-
- [1、折线图:使用 plot() 函数来绘制折线图。](#1、折线图:使用 plot() 函数来绘制折线图。)
- [2.散点图:同样使用 plot() 函数,但可以通过指定点标记来绘制散点图。](#2.散点图:同样使用 plot() 函数,但可以通过指定点标记来绘制散点图。)
- [3.柱状图:使用 bar() 函数来绘制柱状图。](#3.柱状图:使用 bar() 函数来绘制柱状图。)
- [4、饼图:使用 pie() 函数来绘制饼图。](#4、饼图:使用 pie() 函数来绘制饼图。)
- 下篇内容
概述
Matplotlib是一个用于绘制图表和可视化数据的Python库,由John D. Hunter于2003年创建。它是一个开源项目,广泛应用于科研、教育和工程等领域。Matplotlib提供了广泛的绘图功能,适用于科学计算、数据分析、机器学习等领域,并且尤其适用于中小规模的数据集和对可视化定制要求较高的场景。
Matplotlib的主要特点包括:
- 广泛的图表类型:支持多种图表类型,包括线图、散点图、柱状图、饼图、等高线图等,适用于不同类型的数据可视化需求。
- 直观而灵活的绘图工具:用户可以通过简单的代码创建高质量的图表,并对其进行自定义,以满足特定的可视化需求。
- 渐进、交互式实现数据可视化:Matplotlib支持以渐进和交互式的方式实现数据可视化,使得用户能够更深入地探索和理解数据。
Matplotlib创建图表主要有两种模式:面向对象模式(Object-Oriented API)和pyplot模式(pyplot API)。
一、pyplot模式(pyplot API):
pyplot模式提供了一种MATLAB风格的接口,它提供了一系列函数,允许用户以简单、直接的方式创建图表。在这种模式下,用户不需要显式地创建Figure和Axes对象,pyplot会自动管理这些对象。这使得代码更加简洁,易于理解和编写。
以下是一个使用pyplot模式创建简单折线图的示例:
python
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 使用pyplot绘制折线图
plt.plot(x, y)
# 显示图表
plt.show()
运行结果:
二、面向对象模式(Object-Oriented API):
在这种模式下,用户会首先创建一个Figure对象,这可以看作是一个画布。然后,在这个Figure对象上,用户会创建一个或多个Axes对象,这些Axes对象就是用于绘制图表的具体区域。用户可以针对每个Axes对象进行图表的绘制和定制。这种模式提供了更大的灵活性和控制力,允许用户更精细地控制图表的各个部分。
以下是一个使用面向对象模式创建简单折线图的示例:
python
import matplotlib.pyplot as plt
# 创建画布,
fig,ax = plt.subplots(figsize=(10,5))
# 使用Axes对象绘制折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
ax.plot(x, y)
# 显示图表
plt.show(fig)
运行结果:
这两种模式各有优缺点。面向对象模式提供了更大的灵活性和控制力,适合对图表进行更精细的定制;而pyplot模式则更加简洁直观,适合快速绘制简单的图表。用户可以根据自己的需求选择合适的模式。
三、创建图表详细流程
本次主要用pyplot模式来讲解创建图表的主要流程
(一)创建画布(figure)
figure() 是 Matplotlib 库中用于创建一个新的图形窗口的函数,它返回一个 Figure 对象,该对象可以被视为一个画布,用于绘制图表和其他图形元素。
1.函数格式
python
python
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
2.参数解释
- num:整数或字符串,可选参数。用于指定图形的编号或名称。如果提供了整数,它将是图形的编号;如果提供了字符串,它将是图形的窗口标题。如果省略,则会自动生成编号。
- figsize:一个包含两个浮点数的元组,可选参数。指定图形的宽度和高度(以英寸为单位)。
例如,figsize=(8, 6) 会创建一个宽度为 8 英寸、高度为 6 英寸的图形。 - dpi:整数,可选参数。图形的分辨率,即每英寸的点数。默认值通常为 100,但可以根据需要进行调整。
- facecolor:颜色规范字符串或 RGB 元组,可选参数。图形的背景颜色。
- edgecolor:颜色规范字符串或 RGB 元组,可选参数。图形边缘的颜色。
- frameon:布尔值,可选参数。如果为 True,则绘制图形边框。
- FigureClass:Figure 的子类,可选参数。用于创建图形的自定义 Figure 类。
- clear:布尔值,可选参数。如果为 True,则清除当前图形(如果存在)。
3.返回值
figure() 函数返回一个 Figure 对象,你可以使用它来进一步定制图形和添加子图(Axes)。
python
fig = plt.figure(figsize=(10, 8))
(二)传入x轴和y轴的值(plot)
plot()函数是用于在 Axes 对象上绘制线图的基本函数。它接受一系列 x 和 y 坐标点,并连接这些点以形成线。
1.函数语法
python
# 创建画布
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None)
2.参数解释
- x, y:这些参数是序列,表示数据点的 x 和 y 坐标。通常 x 和 y 是长度相同的数组或列表。如果 x 和 y 都是缺失的,那么可以使用一个序列,此时序列中的值将被视为 y 值,x 值将被自动生成为 0, 1, 2, ...。
- fmt:字符串,可选参数,用于指定线条的颜色、样式和标记。例如,'r-' 表示红色实线,'go' 表示绿色圆圈标记点。
- linestyle 或 ls:线条样式,例如 '-'、'--'、'-.'、':' 或 ' '(空格表示无线)。
color 或 c:线条颜色。 - marker:标记样式,例如 'o'、'.'、','、's' 等。
- mew, mfc, mec:分别表示标记边缘宽度、标记填充颜色和标记边缘颜色。
- label:图例的标签。
- alpha:透明度,介于 0(完全透明)和 1(完全不透明)之间。
- linewidth 或 lw:线条宽度。
3.返回值
plot 函数返回一个线条列表,每个线条是一个 Line2D 对象,这些对象可以在之后被进一步定制或查询。
python
# 添加 x,y 轴
x = [1, 3, 5, 6, 10]
y = [-5, 3, 5, 6, 5]
plt.plot(x, y)
(三)添加网格线(grid)
grid()用于在图表上添加网格线。网格线可以帮助读者更容易地读取图表上的数据点,特别是在处理大量数据时。
plt.grid() 有几个可选参数,可以用来定制网格线的外观和行为。
参数:
- b 或 bool:决定是否显示网格线。默认值为 None,意味着是否显示网格线取决于当前的 rcParam 设置。
- axis:指定在哪个轴('x', 'y', 'both')上显示网格线。默认值为 'both',表示在 x 轴和 y 轴上都显示网格线。
- which:决定网格线是在主要刻度('major')上,还是在次要刻度('minor')上显示,或者两者都显示('both')。默认值为 'major',表示只在主要刻度上显示网格线。
- linestyle 或 ls:设置网格线的样式(例如,'-'、'--'、'-.'、':'、'steps' 等)。
- color 或 c:设置网格线的颜色。
- alpha:设置网格线的透明度。
- linewidth 或 lw:设置网格线的宽度。
python
# 添加绿色网格虚线
plt.grid(True,color= 'g',ls= '--')
(四)添加x轴和y轴值范围(xlim/ylim)
plt.xlim()/ylim用于设置当前轴的 x 轴的范围。这个函数接受两个参数,分别表示 x 轴的最小值和最大值,从而限制了图表中 x 轴显示的数据范围。
1.格式
python
matplotlib.pyplot.xlim/ylim(xmin/ymin=None, xmax/ymax=None)
2. 参数
- xmin/ymin, xmax/ymax:这两个参数指定了 x 轴的范围。可以是单个值(当另一个参数为 None 时,表示只设置一端的限制,另一端保持自动计算),或者是一对值(表示同时设置最小值和最大值)。
返回值
plt.xlim()/ylim() 函数返回当前 x 轴的范围,即 (xmin/ymin, xmax/ymax)。
python
# 添加x轴和y轴值范围
plt.xlim(0, 10)
plt.ylim(-5, 10)
(五)添加x轴y轴标签(xlabel/ylabel)
xlabel 和 ylabel 是 Matplotlib 库中用于为图表的 x 轴和 y 轴添加标签的函数。这些标签可以帮助读者更好地理解图表所展示的数据。
xlabel 函数
xlabel 函数用于设置 x 轴的标签。
语法:
python
matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None)
参数解释:
xlabel:字符串,表示 x 轴的标签文本。
fontdict:字典,可选参数,用于指定标签文本的字体属性。
labelpad:浮点数,可选参数,表示标签与轴之间的距离。
ylabel 函数
ylabel 函数用于设置 y 轴的标签。
语法:
python
matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None)
参数解释:
ylabel:字符串,表示 y 轴的标签文本。
fontdict:字典,可选参数,用于指定标签文本的字体属性。
labelpad:浮点数,可选参数,表示标签与轴之间的距离。
python
# 添加x轴和y轴值标签,size为字体大小
plt.xlabel('x', size=20)
plt.ylabel('y', size=20)
(六)添加标题和绘制图表
使用ttitle添加标题和show绘制图表
python
# 添加标题和绘制
plt.title('test',size=20)
plt.show()
完整流程代码实现:
python
import matplotlib.pyplot as plt
# 1.创建画布
plt.figure(figsize=(10, 8))
# 2.添加 x,y 轴
x = [1, 3, 5, 6, 10]
y = [-5, 3, 5, 6, 7]
plt.plot(x, y)
# 3.添加绿色网格虚线
plt.grid(True,color= 'r',ls= '--')
# 添加x轴和y轴值范围
plt.xlim(0, 10)
plt.ylim(-5, 10)
# 添加x轴和y轴值标签
plt.xlabel('x', size=10)
plt.ylabel('y', size=10)
# 添加标题和绘制
plt.title('test',size=20)
plt.show()
表格:
四、常用图表样式
1、折线图:使用 plot() 函数来绘制折线图。
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.title('Title')
plt.show()
运行结果:
2.散点图:同样使用 plot() 函数,但可以通过指定点标记来绘制散点图。
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 8, 10]
plt.plot(x, y, 'o') # 'o' 表示使用圆圈作为点标记
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.title('Scatter Plot')
plt.show()
三个变量时也可用size大小和color来表示第三个变量的变化
3.柱状图:使用 bar() 函数来绘制柱状图。
python
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D']
y = [10, 15, 7, 10]
plt.bar(x, y)
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Chart')
plt.show()
4、饼图:使用 pie() 函数来绘制饼图。
python
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%') # autopct 用于显示百分比
plt.title('Pie Chart')
plt.axis('equal') # 保证饼图是圆的,而不是椭圆形的
plt.show()
这只是 Matplotlib 的一部分功能,实际上 Matplotlib 提供了更加复杂和高级的图表类型,如等高线图、热力图、三维图表等。具体使用时,可以根据需要查阅 Matplotlib 的官方文档或相关教程来深入了解更多细节和用法。
下篇内容
Pandas的可视化