Python Matplotlib 绘图错误:x 和 y 维度不一致的解决方法
Python Matplotlib 绘图错误:x 和 y 维度不一致的解决方法/n/n在使用 Python Matplotlib 绘制图形时,经常会遇到 x 和 y 数组维度不一致导致的错误。例如,以下代码:/n/npython/nimport numpy as np/nimport matplotlib.pyplot as plt/n/nplt.subplot(1, 1, 1)/n/n# 建立一个坐标系/nx = np.array([1, 90])/ny = np.array([0, 180, 160, 140, 150, 130, 140, 140, 130, 130,/n 140, 140, 150, 130, 140, 130, 130, 140, 140, 140,/n 130, 130,150, 130, 130, 150, 130, 140, 140, 140,/n 130, 140, 140, 150, 130, 150, 140, 130, 130, 130,/n 140, 130, 140, 150,140, 130, 130, 130, 150, 130,/n 130, 150, 130, 130, 140, 140, 130, 140, 140, 140,/n 130, 130, 130, 140, 130, 130,160, 130, 130, 130,/n 140, 130, 140, 130, 160, 130, 130, 130, 140, 130,/n 130, 140, 140, 130, 130, 140, 130, 130,140, 140])/n/nplt.rcParams['font.sans-serif'] = ['KaiTi']/n# 解决中文乱码问题/nplt.rcParams['axes.unicode_minus'] = False/n# 解决负号无法显示的问题/n/nplt.plot(x, y, color='k', linestyle='dashdot',/n linewidth=1, marker='o', markersize=5, label='Variation')/n# 指定颜色线型线宽和label/n/nplt.title('Variation', loc='center')/nfor a, b in zip(x, y):/n plt.text(a, b, b, ha='center', va='bottom', fontsize=10)/n/nplt.grid(True)/nplt.legend()/nplt.savefig(r'C://1.jpg')/nplt.show()/n/n/n就会报以下错误:/n/n/nTraceback (most recent call last):/n File 'D://python//pycharm//lianxidaima//CQ//testing//987654321.py', line 38, in <module>/n linewidth=1, marker='o', markersize=5, label='Variation')/n File 'D://python//pycharm//lianxidaima//venv//lib//site-packages//matplotlib//pyplot.py', line 2769, in plot/n **({'data': data} if data is not None else {}), **kwargs)/n File 'D://python//pycharm//lianxidaima//venv//lib//site-packages//matplotlib//axes/_axes.py', line 1635, in plot/n lines = [*self._get_lines(*args, data=data, **kwargs)]/n File 'D://python//pycharm//lianxidaima//venv//lib//site-packages//matplotlib//axes/_base.py', line 312, in __call__/n yield from self._plot_args(this, kwargs)/n File 'D://python//pycharm//lianxidaima//venv//lib//site-packages//matplotlib//axes/_base.py', line 498, in _plot_args/n raise ValueError(f'x and y must have same first dimension, but '/nValueError: x and y must have same first dimension, but have shapes (2,) and (90,)/n/n/n这个报错是因为 x 和 y 的维度不一致,x 的 shape 是 (2,),y 的 shape 是 (90,)。解决方法是将 x 和 y 的长度保持一致。/n/n以下是修改后的代码:/n/npython/nimport numpy as np/nimport matplotlib.pyplot as plt/n/nplt.subplot(1, 1, 1)/n/n# 建立一个坐标系/nx = np.array([1, 90])/ny = np.array([0, 180, 160, 140, 150, 130, 140, 140, 130, 130,/n 140, 140, 150, 130, 140, 130, 130, 140, 140, 140,/n 130, 130,150, 130, 130, 150, 130, 140, 140, 140,/n 130, 140, 140, 150, 130, 150, 140, 130, 130, 130,/n 140, 130, 140, 150,140, 130, 130, 130, 150, 130,/n 130, 150, 130, 130, 140, 140, 130, 140, 140, 140,/n 130, 130, 130, 140, 130, 130,160, 130, 130, 130,/n 140, 130, 140, 130, 160, 130, 130, 130, 140, 130,/n 130, 140, 140, 130, 130, 140, 130, 130,140, 140])/n/nplt.rcParams['font.sans-serif'] = ['KaiTi']/n# 解决中文乱码问题/nplt.rcParams['axes.unicode_minus'] = False/n# 解决负号无法显示的问题/n/nx = np.linspace(1, 90, len(y)) # 生成与y长度相同的x坐标/nplt.plot(x, y, color='k', linestyle='dashdot',/n linewidth=1, marker='o', markersize=5, label='Variation')/n# 指定颜色线型线宽和label/n/nplt.title('Variation', loc='center')/nfor a, b in zip(x, y):/n plt.text(a, b, b, ha='center', va='bottom', fontsize=10)/n/nplt.grid(True)/nplt.legend()/nplt.savefig(r'C://1.jpg')/nplt.show()/n/n/n通过使用 np.linspace(1, 90, len(y)) 生成与 y 长度相同的 x 坐标,可以成功绘制出图形。/n/n希望这篇文章对您有所帮助!/n
原文地址: https://www.cveoy.top/t/topic/fw8z 著作权归作者所有。请勿转载和采集!