Python Matplotlib 解决 X, Y 尺寸不一致的绘图问题

在使用 Python 的 Matplotlib 库进行数据可视化时,有时会遇到 X 和 Y 数据尺寸不一致的问题,导致绘图出现错误。本文将针对随机森林回归中常见的尺寸不一致问题,提供两种解决方法。

问题描述:

在随机森林回归中,预测结果 yy 通常是一个一维数组,而原始数据 Xy 可能为二维数组。当使用 plt.scatter() 绘图时,由于 Xy 的尺寸不一致,会导致绘图失败。

解决方法:

方法一:使用 reshape() 函数调整数组尺寸

y 数组使用 reshape() 函数调整为与 X 相同的尺寸:

# 调整y数组的尺寸
y = y.reshape((len(y), 1))

# 绘图代码
plt.scatter(X, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)

方法二:使用 zip() 函数打包两个数组

Xy 数组使用 zip() 函数打包成元组,再进行绘图:

# 打包两个数组成元组
data = zip(X, y)

# 绘图代码
for x, y in data:
    plt.scatter(x, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)

通过以上两种方法,可以有效解决 Xy 尺寸不一致的问题,并成功绘制出随机森林回归的图形。

代码示例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

%matplotlib notebook

plt.rcParams['font.sans-serif'] = ['PingFang HK']  # 选择一个本地的支持中文的字体
fig, ax = plt.subplots()
ax.set_facecolor('#f8f9fa')

x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
xx = np.arange(x_min, x_max, .05)
yy = rf.predict(np.c_[xx.ravel(), np.zeros(len(xx))])

# 方法一:使用 reshape() 函数
y = y.reshape((len(y), 1))
plt.scatter(X, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)

# 方法二:使用 zip() 函数
data = zip(X, y)
for x, y in data:
    plt.scatter(x, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)

ax.set_title('随机森林回归', color='#264653')
ax.set_xlabel('X', color='#264653')
ax.set_ylabel('Y', color='#264653')
ax.tick_params(labelcolor='#264653')
plt.show()

注意:

  • 实际代码中,需要根据具体情况选择合适的解决方法。
  • 在使用 reshape() 函数时,需要确保 y 数组的元素数量与 X 数组的列数一致。
  • 使用 zip() 函数打包的元组中,每个元组包含一个 X 的元素和一个 y 的元素。

希望本文能够帮助您解决 Python Matplotlib 中的尺寸不一致问题。


原文地址: https://www.cveoy.top/t/topic/oQdq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录