python绘制图像报错

def plot(weights):
    import matplotlib
    import matplotlib.pyplot as plt
    dataMat, labelMat = loadDataSet()
    dataArr = array(dataMat)
    n = shape(dataArr)[0]
    xcord1 = [];
    ycord1 = []
    xcord2 = [];
    ycord2 = []
    for i in range(n):
        if int(labelMat[i]) == 1:
            xcord1.append(dataArr[i, 1]);
            ycord1.append(dataArr[i, 2])
        else:
            xcord2.append(dataArr[i, 1]);
            ycord2.append(dataArr[i, 2])
            fig = plt.figure()
            ax = fig.add_subplot(111)
            ax.scatter(xcord1, ycord1, s=30, c='red', makers='s')
            ax.scatter(xcord2, ycord2, s=30, c='green')
            x = arange(-3.0, 3.0, 0.1)
            y = (-weights[0] - weights[1] * x / weights[2])
            ax.plot(x, y)
            plt.xlabel('X1');
            plt.ylabel('X2')
            plt.show()

报错:AttributeError: 'PathCollection' object has no property 'makers'

兄dei,正确的属性名称应该是 markers,而不是 makers

请将以下行代码:

ax.scatter(xcord1, ycord1, s=30, c='red', makers='s')

改为:

ax.scatter(xcord1, ycord1, s=30, c='red', markers='s')

这样就能够解决这个错误了。

吃符号的亏,上大小写的当,细心点就没事啦!

你遇到的错误信息 "AttributeError: 'PathCollection' object has no property 'makers'" 表明你的代码中存在拼写错误。正确的属性名应该是 'markers' 而是 'makers'。

要解决这个问题,你需要 ax.scatter(xcord1, ycord1, s=30, c='red', makers='s') 这一行替换为 ax.scatter(xcord1, ycord1, s=30, c='red', markers='s')。