在使用Python Matplotlib库进行绘图时,可能会遇到以下错误:/n/n/nTraceback (most recent call last):/n File /'D://python//pycharm//lianxidaima//KS//running//12345.py/', line 63, in <module>/n marker=/'o/', markersize=3, label='折线图')/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 (9,) and (900,)/n/n/n该错误通常发生在使用plt.plot函数时,xy的维度不匹配导致的。/n/n问题分析/n/n在示例代码中,x的维度为(9,),而y1使用了np.repeat(y1, 10)扩展成了(900,),导致xy1的维度不一致,从而引发错误。/n/n解决方案/n/n为了解决这个问题,可以使用y1[:9]来截取y1的前9个元素,使其与x的维度一致。/n/n修改后的代码/n/npython/nimport numpy as np/nimport pandas as pd/nimport matplotlib.pyplot as plt/n/nx = np.arange(0, 90, 10)/ny1 = np.random.randint(130, 160, 90)/ny2 = np.random.randint(80000, 88000, 90)/n/nplt.rcParams['font.sans-serif'] = ['KaiTi']/nplt.rcParams['axes.unicode_minus'] = False/nfig = plt.figure(figsize=(8, 6))/nplt.xlim(0, 90)/nplt.ylim(0, 90000)/nplt.xticks(np.arange(0, 100, 10), ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90'])/nplt.yticks(np.arange(0, 100000, 10000), ['0', '1万', '2万', '3万', '4万', '5万', '6万', '7万', '8万', '9万'])/nplt.xlabel('Variation', labelpad=10, fontsize='xx-large', color='#70AD47', fontweight='bold')/nplt.ylabel('Capacity', labelpad=10, fontsize='xx-large', color='#70AD47', fontweight='bold')/nplt.grid(b=True, linestyle=/'dashed/', linewidth=1)/nplt.title(label='SKU1 Variation与Capacity变化关系', loc='center')/n/nfor a, b in zip(x, y1):/n plt.text(a, b, str(b), ha='center', va='bottom', fontsize=11)/n/nfor a, b in zip(x, y2):/n plt.text(a, b, str(b), ha='center', va='bottom', fontsize=11)/n/nplt.plot(np.arange(0, 90, 10), y1[:9], color=/'k/', linestyle=/'solid/', linewidth=1,/n marker=/'o/', markersize=3, label='折线图')/n/nwidth = 3/nplt.bar(x - width / 2, y2, width=width, color=/'k/', label='柱形图')/n/nplt.legend(loc='upper left')/nplt.legend(ncol=2)/n/nplt.annotate('服务器宕机了', xy=(60, 1), xytext=(70, 1), arrowprops=dict(facecolor='black', arrowstyle='->'))/n/nplt.savefig('sku1.png')/nplt.show()/n/n/n总结/n/n在使用plt.plot函数绘图时,确保xy的维度一致,避免出现“x and y must have same first dimension”的错误。可以通过截取数据或使用其他方法来调整维度。

Python Matplotlib绘图报错:'x' and 'y' must have same first dimension, but have shapes (9,) and (900,)

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

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