Seaborn配置隐藏了默认的matplotlib

时间:2015-10-13 09:43:45

标签: python matplotlib seaborn

Seaborn提供了一些对科学数据表示非常有趣的图形。 因此,我开始使用这些Seaborn图形穿插其他定制的matplotlib图。 问题是,一旦我这样做了:

import seaborn as sb

这个导入似乎全局设置了seaborn的图形参数,然后导入下面的所有matplotlib图形都获得了seaborn参数(它们得到灰色背景,linewithd更改等等)。

在SO中有an answer解释如何使用matplotlib配置生成seaborn图,但我想要的是在将两个库一起使用时同时保持matplotlib配置参数不变,同时能够生成,当需要的,原始的海啸地块。

5 个答案:

答案 0 :(得分:20)

如果您从不想使用seaborn样式,但想要一些seaborn函数,可以使用以下行(documentation)导入seaborn:

import seaborn.apionly as sns

如果您想要生成一些seaborn样式的图表,而某些图案没有,则在同一个脚本中,您可以使用seaborn.reset_orig函数关闭seaborn样式。

执行apionly导入似乎会在导入时自动设置reset_orig,因此在您的用例中最适合您。

以下是matplotlib默认值与seaborn之间切换的示例:

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

# a simple plot function we can reuse (taken from the seaborn tutorial)
def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)

sinplot()

# this will have the matplotlib defaults
plt.savefig('seaborn-off.png')
plt.clf()

# now import seaborn
import seaborn as sns

sinplot()

# this will have the seaborn style
plt.savefig('seaborn-on.png')
plt.clf()

# reset rc params to defaults
sns.reset_orig()

sinplot()

# this should look the same as the first plot (seaborn-off.png)
plt.savefig('seaborn-offagain.png')

产生以下三个图:

seaborn-off.png: seaborn-off

seaborn-on.png: seaborn-on

seaborn-offagain.png: enter image description here

答案 1 :(得分:8)

seaborn version 0.8 (July 2017)开始,图表样式在导入时不再更改:

  

导入seaborn时,不再应用默认的[seaborn]样式。现在有必要明确调用 set() set_style() set_context() 中的一个或多个,和 set_palette() 。相应地,seaborn.apionly模块已被弃用。

您可以使用plt.style.use()选择任何情节的样式。

import matplotlib.pyplot as plt
import seaborn as sns

plt.style.use('seaborn')     # switch to seaborn style
# plot code
# ...

plt.style.use('default')     # switches back to matplotlib style
# plot code
# ...


# to see all available styles
print(plt.style.available)

详细了解plt.style()

答案 2 :(得分:1)

您可以使用style guide中描述的matplotlib.style.context功能。

#%matplotlib inline #if used in jupyter notebook
import matplotlib.pyplot as plt
import seaborn as sns

# 1st plot 
with plt.style.context("seaborn-dark"):
    fig, ax = plt.subplots()
    ax.plot([1,2,3], label="First plot (seaborn-dark)")

# 2nd plot 
with plt.style.context("default"):
    fig, ax = plt.subplots()
    ax.plot([3,2,1], label="Second plot (matplotlib default)")

#  3rd plot 
with plt.style.context("seaborn-darkgrid"):
    fig, ax = plt.subplots()
    ax.plot([2,3,1], label="Third plot (seaborn-darkgrid)")

enter image description here

答案 3 :(得分:1)

seaborn.reset_orig()函数允许将所有RC参数恢复为原始设置(尊重自定义rc)

答案 4 :(得分:0)

正如in this other question所述,您可以使用以下内容导入seaborn:

columns : [
{ title: "&nbsp;", width: "83px", template: "<a class='k-button' name='DeleteButton'><span class='k-icon k-i-x'></span>Delete</a>" }
]

不会修改matplotlib样式。