Matplotlib的默认默认位置在哪里?

时间:2017-06-17 19:47:55

标签: python matplotlib

我正在查看matplotlib.pyplot.savefig的文档,特别是dpi参数的文档:

  

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

现在关于matplotlibrc,文档列出了四个位置的列表:只有最后一个(由包提供)适用于我,这通过调用{{1 。}}

但是,该软件包提供的matplotlib.matplotlib_fname()实际上是matplotlibrc提供的the commented out example

我的问题是:

  1. 这是文档错误吗?如果我们遵循文档,这是未定义的行为。
  2. 定义了“默认默认值”在哪里?这是在另一个文件的某个地方,还是在库中硬编码? (我知道我可以检查matplotlib以获取其默认默认值(在我的情况下为matplotlib.rcParams['savefig.dpi']),我问这些默认默认值来自哪里。)

1 个答案:

答案 0 :(得分:0)

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

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

'savefig.dpi': ['figure', validate_dpi], # DPI(目前为1298行)

其中'figure'表示应该使用图的dpi。图dpi的值默认为

'figure.dpi': [100, validate_float], # DPI(目前为1277行)

但请注意两件事:

  1. 如果matplotlib rc文件指定了这些值,则会覆盖这些值(即rc文件中的相应行未被注释掉)。
  2. 可以使用例如

    找到实际值
    import matplotlib.pyplot as plt
    print(plt.rcParams)
    

    这些可能已经与默认值不同。例如,Jupyter笔记本将默认dpi设置为72:
    enter image description here

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