Python Matplotlib';谁的默认值位于哪里?

Python Matplotlib';谁的默认值位于哪里?,python,matplotlib,Python,Matplotlib,我正在查看文档,尤其是其dpi参数: 分辨率以每英寸点数为单位。如果None它将默认为matplotlibrc文件中的值savefig.dpi 现在,文档给出了四个查找位置的列表:只有最后一个(由包提供)适用于我,这通过调用matplotlib.matplotlib\u fname()得到确认 但是,包提供的matplotlibrc实际上是由matplotlib提供的 我的问题是: 这是文档错误吗?如果我们遵循文档,这是未定义的行为 “默认值”在哪里定义?这是在另一个文件中,还是在库中硬编码?(

我正在查看文档,尤其是其
dpi
参数:

分辨率以每英寸点数为单位。如果
None
它将默认为matplotlibrc文件中的值
savefig.dpi

现在,文档给出了四个查找位置的列表:只有最后一个(由包提供)适用于我,这通过调用
matplotlib.matplotlib\u fname()
得到确认

但是,包提供的
matplotlibrc
实际上是由
matplotlib
提供的

我的问题是:

  • 这是文档错误吗?如果我们遵循文档,这是未定义的行为
  • “默认值”在哪里定义?这是在另一个文件中,还是在库中硬编码?(我知道我可以检查
    matplotlib.rcParams['savefig.dpi']
    以获取其默认值(在我的例子中,它是
    figure
    ),我询问这些默认值来自何处。)

  • matplotlib默认rcParams在文件
    rcsetup.py
    中定义

    当前开发版本的
    savefig.dpi
    的默认值为

    'savefig.dpi':['figure',validate#dpi],#dpi
    (当前行)

    其中,
    “图形”
    表示应使用图形的dpi。地物dpi的值默认为

    'figure.dpi':[100,验证浮点数],#dpi
    (当前行)

    但请注意两件事:

  • 如果matplotlib rc文件指定了这些值,则会覆盖这些值(即rc文件中的相应行不会被注释掉)
  • 实际值可通过以下方式找到:

    import matplotlib.pyplot as plt
    print(plt.rcParams)
    
    这些值可能已经不同于默认值。例如,Jupyter笔记本电脑将默认dpi设置为72:


  • 关于第一个问题,即使这些值在matplotlibrc中被注释掉,它们也应该与
    rcsetup.py
    中的值相同。因此,要么该值被注释掉,然后它们仍然默认为rc文件中的值,要么它们没有被注释掉,其中的语句显然也是正确的。

    1。
    matplotlibrc
    中有一行:“忽略空行或以注释#符号开头的行”。因此,如果希望通过
    matplotlibrc
    自定义某些属性,则必须取消对其注释。2.我相信我会回答你的问题。我的问题不是关于如何将默认值设置为
    matplotlib
    。对不起,第一个问题中的“this”是什么意思还不太清楚。我指的是,文档似乎表明默认值必须来自matplotlibrc文件,尽管matplotlib仍然提供默认值,但正如我在回答中所说,这些值应该始终相同。因此,在实践中,这个语句总是正确的,除非其他机制(如解释器或后端)更改设置。