箱线图时出错

数据挖掘 可视化 matplotlib
2022-03-11 13:15:54

代码:

    fig = plt.figure(figsize = (6,6))
    ax = fig.gca()
    auto_price.loc[:, ['price', 'fuel-type', 'aspiration']].boxplot(by = 'fuel-type', 'aspiration', ax = ax)
    ax.set_title('Box plot of price new')
    ax.set_ylabel('Auto Price')
    ax.set_ylim(0.0, 50000.0)
    plt.show()

Error:
  File "<ipython-input-20-0712de0416f5>", line 3
    auto_price.loc[:, ['price', 'fuel-type', 'aspiration']].boxplot(by = 'fuel-type', 'aspiration', ax = ax, yx = yx)
                                                                                     ^
SyntaxError: positional argument follows keyword argument

背景/附加信息:

以下代码工作正常:

    fig = plt.figure(figsize =(5,5))
    ax = fig.gca()
    auto_price.loc[:,['price', 'horsepower']].boxplot(by = 'horsepower', ax = ax)
    ax.set_title('Box plot of price')
    ax.set_ylabel('Auto Price')
    ax.set_ylim(0.0, 50000.0)
1个回答

正如错误消息所暗示的,您的错误是由在关键字参数之后传递位置参数引起的。

考虑一个函数

def foo(a,b,c):
    return a+b*c

你可以调用这个函数foo(3,4,5),它返回23。在这种情况下,所有三个参数都是位置参数s,Python通过它们的位置来理解它们:3是第一个参数,因此对应于a同样4forb5for c

你也可以调用这个函数foo(b=3,a=4,c=5),它返回 19。这里所有的三个参数都是关键字参数s,在某种意义上,因为关键字而不是它的位置而3被识别为 for 。b

您可以混合使用这两种参数,但位置参数s 必须在关键字参数之前,例如foo(3,c=4,b=5). 这里没有混淆:3没有关键字,所以它是由它的位置来解释的,因此3是 for a

您不能在位置参数之前写关键字参数。例如,如果您调用,Python 会感到困惑:我知道是 for ,但是是for or 所以如果你这样写,你会得到错误信息foo(c=3,4,5)3c4ab

SyntaxError: positional argument follows keyword argument

因此,在您的代码中,您在关键字参数之后boxplot(by = 'fuel-type', 'aspiration', ax = ax)传递了位置参数,导致此错误。'aspiration'by = 'fuel-type'

要修复,只需'aspiration'通过其关键字调用,即KEYWORD='aspiration'.