matplotlib 轴的类型提示

Jon*_*nco 7 python matplotlib pandas python-3.8 plot-annotations

我正在为某些函数编写类型注释,但找不到注释预期类型为 的参数的最佳方法matplotlib.axes._axes.Axes

我什至不确定我是否为预期为 类型的参数做了正确的事情pandas.core.frame.DataFrame

def myfunc(
        df: pd.DataFrame, # is this correct?
        ax: matplotlib.axes._axes.Axes # do I have to use this?
        ) -> None:
   
    # body of my function
Run Code Online (Sandbox Code Playgroud)

一些见解?

谢谢。

mmd*_*ger 2

不要.pyi在类型提示中引用该文件,只需使用实际的类名。你的 IDE 还是mypy会搞清楚的。

如果您想mypy使用 matplotlib 版本 <3.8,您将需要data-science-types. data-science-types只需要安装,不需要导入。

请参阅此 matplotlib 问题与此答案相关。

以下是经过mypy运行后测试的pip install data-science-types

import pandas as pd
import matplotlib.axes
from matplotlib import pyplot as plt
import numpy as np


def myfunc(
    df: pd.DataFrame,
    ax: matplotlib.axes.Axes,
) -> None:
    ax.plot(df.values.mean(), df.values.std())


if __name__ == "__main__":
    f, axis = plt.subplots()
    df = pd.DataFrame(data=np.random.rand(50, 10))
    myfunc(df, axis)
Run Code Online (Sandbox Code Playgroud)

运行mypy返回Success: no issues found in 1 source file