首页 > 解决方案 > 将numpy数组传递给函数给出类型错误

问题描述

不知道为什么我在尝试绘制条形图时总是出错。

 def plotBar(x,y):
    plt.bar(x, y, width=1, align='center', color='plum', edgecolor='firebrick',linewidth=1)
    plt.show()

在主要我调用这样的函数:

x1=np.arange(1,101)
y1=np.arange(50,151)

classname.plotBar(x1,y1)

但是,我不断收到此错误:

TypeError: plotBar() takes 2 positional arguments but 3 were given

标签: pythonfunctionnumpymatplotlibplot

解决方案


我将您的函数声明为类中的静态方法:

class Xxx:
    @staticmethod
    def plotBar(x,y):
        plt.bar(x, y, width=1, align='center', color='plum',
            edgecolor='firebrick', linewidth=1)
        plt.show()

下一个更正是两个数组的长度必须相等,所以我更改了y的定义,使其也有100 个元素:

x1 = np.arange(1,101)
y1 = np.arange(51,151)

(以前它有101个元素)。

然后我叫它:

Xxx.plotBar(x1,y1)

并得到了一张照片。


推荐阅读