找回密码
 立即注册
首页 业界区 业界 matplotlib 机器学习绘图

matplotlib 机器学习绘图

战匈琼 2025-9-28 18:34:56
安装:
  1. pip install matplotlib
复制代码
介绍

Matplotlib 是 Python 中最常用的 2D 绘图库,也可以用来绘制 3D 图形。它提供了一套面向对象(OO)和基于 pyplot 的 MATLAB 风格接口,几乎能画出所有静态、动态、交互式的图表。
  1. matplotlib/
  2. ├─ init.py      # 顶层命名空间,常用别名 import matplotlib as mpl
  3. ├─ pyplot.py        # MATLAB 风格接口,最常用 import matplotlib.pyplot as plt
  4. ├─ artist.py        # 绘图元素基类
  5. ├─ axes.py          # Axes 对象
  6. ├─ figure.py        # Figure 对象
  7. ├─ axis.py          # X/YAxis 对象
  8. ├─ backend_*.py     # 各后端实现
复制代码
matplotlib.pyplot
最常用的高层接口,直接操作当前 figure/axes,函数式调用。
典型函数:plot、scatter、hist、imshow、subplots、savefig、show 等。
matplotlib.figure
管理整张图(Figure 对象),包含一个或多个 Axes。
matplotlib.axes
真正的“画布”,所有绘图都在 Axes 上完成。
关键方法:plot、bar、pie、contour、pcolormesh、annotate 等。
子模块 matplotlib.axes.Axes 中 >200 个绘图/辅助方法。
函数名称描述Plot折线图或点图Scatter绘制x与y的散点图Bar绘制条形图Barh绘制水平条形图Stem棉签图Boxplot绘制箱型图Hist绘制直方图his2d绘制2D直方图Pie绘制饼状图Step绘制阶梯图Quiver绘制一个二维按箭头Stackplot绘制堆叠图Polar绘制极坐标图折线图

plot() 用于画图它可以绘制点和线,语法格式如下:
  1. # 画单条线
  2. plot([x], y, [fmt], *, data=None, **kwargs)
  3. # 画多条线
  4. plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
复制代码
参数说明:
x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。x 轴是可选,不指定则以y轴长度为个数,生成从0开始的整数数组为x轴。
fmt:可选,定义基本格式(如颜色、标记和线条样式)。
**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
基础折线图:
  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4]
  3. y = [2,4,9,26]
  4. plt.plot(x,y)
  5. plt.show()
复制代码
1.png

标签信息:
在画布中添加标签信息:

  • plt.xlabel(): x轴坐标信息
  • plt.ylabel(): y轴坐标信息
  • plt.title(): 顶部标题信息
  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4]
  3. y = [2,4,9,26]
  4. plt.plot(x,y)
  5. plt.xlabel("x")
  6. plt.ylabel("y")
  7. plt.title("title")
  8. plt.show()
复制代码
2.png

网格:
plt.grid(): 设置画布中显示网格线
  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4]
  3. y = [2,4,9,26]
  4. plt.plot(x,y)
  5. plt.xlabel("x")
  6. plt.ylabel("y")
  7. plt.title("title")
  8. plt.grid()
  9. plt.show()
复制代码
3.png

点图:
设置fmt参数,绘制点图
  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4]
  3. y = [2,4,9,26]
  4. plt.plot(x,y, "o")
  5. plt.show()
复制代码
4.png

柱状图

bar() 方法语法格式如下:
  1. matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
复制代码
参数说明:

  • x:数组,柱形图的 x 轴数据。
  • height:数组,柱形图的高度。
  • width:浮点型数组,柱形图的宽度。
  • bottom:数组,底座的 y 坐标,默认 0。
  • align:柱形图与 x 坐标的对齐方式

    • 'center' 以 x 位置为中心,这是默认值。
    • 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。

  • **kwargs::其他参数。
基础柱状图:
  1. import matplotlib.pyplot as plt
  2. x = ["apple", "banana", "origin", "watermelon"]
  3. y = [12, 22, 6, 18]
  4. plt.bar(x, y)
  5. plt.show()
复制代码
5.png

设置柱状图颜色:
  1. import matplotlib.pyplot as plt
  2. x = ["apple", "banana", "origin", "watermelon"]
  3. y = [12, 22, 6, 18]
  4. plt.bar(x, y, color="blue")
  5. plt.show()
复制代码
6.png
  1. import matplotlib.pyplot as plt
  2. x = ["apple", "banana", "origin", "watermelon"]
  3. y = [12, 22, 6, 18]
  4. plt.bar(x, y, color=["skyblue", "origin", "magenta", "cyan"])
  5. plt.show()
复制代码
7.png

柱状图填充
使用 hatch 参数可以指定柱状图填充形状, 取值包括:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'
  1. import matplotlib.pyplot as plt
  2. x = ["apple", "banana", "origin", "watermelon"]
  3. y = [12, 22, 6, 18]
  4. plt.bar(x, y, hatch="/")
  5. plt.show()
复制代码
8.png

设置数值
使用 plt.bar_label 函数给柱状图设置数值参数
  1. import matplotlib.pyplot as plt
  2. x = ["apple", "banana", "origin", "watermelon"]
  3. y = [12, 22, 6, 18]
  4. bar = plt.bar(x, y)
  5. plt.bar_label(bar)
  6. plt.show()
复制代码
9.png

柱状对比图:
  1. import matplotlib.pyplot as plt
  2. y_1 = [0.1136, 1.4602, 0.3427, 1.8336]
  3. y_2 = [0.2234, 1.2587, 0.4416, 1.8415]
  4. #2、创建画布
  5. plt.figure(figsize=(20,8))
  6. plt.bar([i-0.1 for i in range(4)], y_1, width=0.2, label='before optimize')
  7. plt.bar([i+0.1 for i in range(4)], y_2, width=0.2, label='after optimize')
  8. #4、修改X刻度
  9. plt.xticks([0,1,2,3], ['MSE', 'RMSE', 'MAE', 'R2'])
  10. plt.legend()
  11. plt.grid(True)
  12. plt.title("model optimize compare")
  13. plt.xlabel("metrics")
  14. plt.ylabel("value")
  15. plt.show()
复制代码
10.png

饼图

pie 是饼图的函数,下面是函数接口:
  1. pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
复制代码

  • x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
  • labels:列表,各个扇形的标签,默认值为 None。
  • colors:数组,表示各个扇形的颜色,默认值为 None。
基础饼图:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.array([35, 25, 25, 15])
  4. plt.pie(x)
  5. plt.show()
复制代码
11.png

标签和颜色:
labels:设置每一个饼图的标签,和饼图个数不一致会报错
colors:设置每一个饼图的颜色,和饼图个数不一致会报错
  1. x = [35, 25, 25, 15]
  2. label = ['apple', "banana", "orange", "watermelon"]
  3. color=["skyblue", "pink", "teal", "cyan"]
  4. plt.pie(x, labels=label, colors=color)
  5. plt.show()
复制代码
12.png

添加百分比:
autopct: 设置百分比,%0.1f%% 代表小数点后一位的带百分号的百分比
  1. x = [35, 25, 25, 15]
  2. label = ['apple', "banana", "orange", "watermelon"]
  3. color=["skyblue", "pink", "teal", "cyan"]
  4. plt.pie(x, labels=label, colors=color, autopct="%0.1f%%")
  5. plt.show()
复制代码
13.png

棉签图
  1. import numpy as np
  2. pred = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
  3. y_test = np.array([0.1, 0.2, 0.3, 0.8, 0.1, 0.2, 0.9, 0.1, 0.5, 0.3, 0.4])
  4. diff = pred - y_test
  5. plt.stem(list(range(len(diff))), diff, linefmt="-.")
  6. plt.show()
复制代码
14.png

箱线图

boxplot(箱线图,又称为盒须图、盒式图)是在1977年由美国统计学家John Tukey发明,分析数据需要为定量数据。通过箱线图,可以直观的探索数据特征,比如观察数据中是否存在异常数据,离群数据。
箱线图共由五个数值点构成,分别是最小观察值,25%分位数(Q1),中位数,75%分位数(Q3),最大观察值,

  • 最小观察值 = Q1 – 1.5(IQR), IQR = Q3 –Q1
  • 最大观察值 = Q3 + 1.5(IQR), IQR = Q3 –Q1
下图显示了箱型图与正态分布的概率分布函数的比较。
15.png

箱线图查看:
下极限(Min):数据集中最小的值。
下四分位数(Q1):数据的第25百分位数。
中位数(Q2):数据的第50百分位数。
上四分位数(Q3):数据的第75百分位数。
上极限(Max):数据集中最大的值。
注意:
上下限:上下限并不是整个数据样本的最大值和最小值,而是

  • 上限 = 去除异常值的最大值(Q3+1.5IQR)
  • 下限 = 去除异常值的最小值(Q1-1.5IQR)
在上下限这里分别划出两条线段作为异常值的分界点。
16.png
  1. import numpy as np
  2. arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
  3. plt.boxplot(arr)
  4. plt.show()
复制代码
17.png

存在异常值的数据:
  1. import numpy as np
  2. arr = np.array([2.5, 0.9, 0.23, 0.56, 0.8, 2.4, 0.5, 0.4, 0.7, 0.1, 0.9])
  3. plt.boxplot(arr)
  4. plt.show()
复制代码
18.png

箱体填充:
  1. import numpy as np
  2. arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
  3. plt.boxplot(arr, patch_artist=True)
  4. plt.show()
复制代码
19.png

中位线样式:
  1. import numpy as np
  2. arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
  3. plt.boxplot(arr, patch_artist=True, medianprops={'linestyle': '-', 'color': 'y', 'linewidth': 1.5})
  4. plt.show()
复制代码
20.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册