【问题标题】:python seaborn to reset back to the matplotlibpython seaborn重置回matplotlib
【发布时间】:2014-11-13 00:30:24
【问题描述】:

我正在使用 seaborn 版本 o.4 和 matplotlib 版本 1.42 我有一个图表通过简单的绘图命令显示线条和标记,例如。

plt.plot([1,5,3,8,4],'-bo');

由于一个潜在的错误(https://github.com/mwaskom/seaborn/issues/344),在导入 seaborn 后,相同的代码只显示没有标记的行。

import seaborn as sb 
plt.plot([1,5,3,8,4],'-bo');

所以我的问题是:导入 seaborn 后,有没有办法将所有参数重置为原始参数?

【问题讨论】:

    标签: python matplotlib marker seaborn


    【解决方案1】:

    是的,请致电seaborn.reset_orig

    【讨论】:

    • 这种类型的作品,但在import seabornseaborn.reset_orig() 之后制作的情节与在这些行之前制作的情节看起来仍然完全不同。有没有办法摆脱所有的 seaborn 影响,就好像它从未被导入一样?
    【解决方案2】:

    这些解决方案都不适合我(Python 3.x、Jupyter)。 有效的是matplotlib.rc_file_defaults()

    在此处查看文档:https://matplotlib.org/stable/api/matplotlib_configuration_api.html#matplotlib.rc_file_defaults

    【讨论】:

    【解决方案3】:

    在Seaborn中经常遇到的刷新Matplotlib的配置副作用:

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import seaborn as sns
    

    运行这个:

    import importlib
    importlib.reload(mpl); importlib.reload(plt); importlib.reload(sns)
    

    对于旧的 Python2 代码:

    import imp
    imp.reload(mpl); imp.reload(plt); imp.reload(sns)
    

    注意:以下都不能正确恢复 matplotlib 的状态:

    • sns.reset_orig()
    • sns.reset_defaults()
    • mpl.rcParams.update(mpl.rcParamsDefault)

    【讨论】:

    • Importlib 导入正常,但是当我尝试使用reload 时,我得到AttributeError: 'module' object has no attribute 'reload'。这仅在 Python 3.x 中可用吗?
    • doh,为 Python 2 更新:import imp; imp.reload(somemodule)
    • 对于在不久的将来阅读此内容的任何人:我在 Jupyter 中尝试了几种不同版本的 matplotlib 和 seaborn 并且无法使其工作,我认为这不是一个通用的解决方案(也许它曾经是)。
    【解决方案4】:

    在我的情况下,我正在搜索重置输出的绘图大小,特别是当我使用 rc 属性更改时,使用以下代码重置为默认大小 sns.reset_defaults()(其中 sns 是 seaborn)。

    【讨论】:

      【解决方案5】:

      你可以保存你想要的rcParams,然后用seaborn改变样式(注意seaborn在导入时不再改变rcParams):

      import matplotlib as mpl
      
      my_params = mpl.rcParams
      
      # apply some change to the rcparams here
      
      mpl.rcParams.update(my_params)
      

      注意这两个

      mpl.rcParams.update(mpl.rcParamsOrig)
      mpl.rcParams.update(mpl.rcParamsDefault)
      

      几乎将所有rcParams 恢复为默认值。 (我在 Jupyter Notebook 中运行此程序)可以轻松查看少数不同的内容:

      # Differences between current params and `Default`
      for key in mpl.rcParamsDefault:
          if not mpl.rcParamsDefault[key] == mpl.rcParams[key]:
              print(key, mpl.rcParamsDefault[key], mpl.rcParams[key])
      
      ## backend agg module://ipykernel.pylab.backend_inline
      ## figure.dpi 100.0 72.0
      ## figure.edgecolor w (1, 1, 1, 0)
      ## figure.facecolor w (1, 1, 1, 0)
      ## figure.figsize [6.4, 4.8] [6.0, 4.0]
      ## figure.subplot.bottom 0.11 0.125
      

      # Differences between `Default` and `Orig`
      for key in mpl.rcParamsDefault:
          if not mpl.rcParamsDefault[key] == mpl.rcParamsOrig[key]:
              print(key, mpl.rcParamsDefault[key], mpl.rcParamsOrig[key])
      
      ## backend agg Qt5Agg
      

      【讨论】:

        【解决方案6】:

        您可以通过以下方式将它们设置回默认值:

        import matplotlib as mpl
        mpl.rcParams.update(mpl.rcParamsDefault)
        

        另外,请查看 Jake VanderPlas 的 this post,了解有关自定义 matplotlib 的更多信息。

        希望对你有帮助!

        【讨论】:

          【解决方案7】:

          可以直接调用seaborn.set()函数,不带函数参数,见[seaborn tutorial][1]

          【讨论】:

          • 这没有任何作用
          • 我在上面提供的解决方案在我回复时正在工作。无需对我投反对票。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多