如何将Matplotlib rcParams与Seaborn一起使用

nhjlsmyf  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(149)

我正在为我的公司编写一个自定义的matplotlib样式表。其中,我尝试更改箱线图的颜色。下面的示例使用字典更改了rcParams。使用matplotlib构建的标准图具有正确的颜色,而在seborn图中似乎只有一些参数被更改。如何强制seborn使用我的样式表?

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df_penguins = pd.read_csv(
    "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv"
)
ex = {
        'boxplot.boxprops.color': 'hotpink',
        'boxplot.notch': True,
        'boxplot.patchartist': False,
        'boxplot.showbox': True,
        'boxplot.showcaps': True,
        'boxplot.showfliers': True,
        'boxplot.showmeans': False,
        'boxplot.vertical': True,
        'boxplot.whiskerprops.color': 'hotpink',
        'boxplot.whiskerprops.linestyle': '--',
        'boxplot.whiskerprops.linewidth': 1.0,
        'boxplot.whiskers': 1.5,
    }

plt.rcParams.update(**ex)
fig, (ax1, ax2) = plt.subplots(
    ncols=2, 
    sharey=True,
    figsize=plt.figaspect(0.5)
)
sns.boxplot(data=df_penguins, y="body_mass_g", ax=ax1)

ax2.boxplot(df_penguins.body_mass_g.dropna())
plt.show()

wh6knrhe

wh6knrhe1#

不同于@mwaskom的评论 * Seborn * 确实在引擎盖下使用了matplotlibrcParams
默认情况下,您通过sns.set_theme()激活海运默认值,sns.set_theme()直接影响rcParams。您可以使用该函数中的rc参数覆盖默认值。
旁注:可以但不建议混合使用matplotlibseaborn导入。简而言之:导入seaborn时不导入matplotlib
我更新了你的代码。

#!/usr/bin/env python3
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df_penguins = pd.read_csv(
    "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv"
)
ex = {
        'boxplot.boxprops.color': 'hotpink',
        'boxplot.notch': True,
        'boxplot.patchartist': False,
        'boxplot.showbox': True,
        'boxplot.showcaps': True,
        'boxplot.showfliers': True,
        'boxplot.showmeans': False,
        'boxplot.vertical': True,
        'boxplot.whiskerprops.color': 'hotpink',
        'boxplot.whiskerprops.linestyle': '--',
        'boxplot.whiskerprops.linewidth': 1.0,
        'boxplot.whiskers': 1.5,
    }

# This loads the Seaborn default theme settings
# and overwrites them with your values from "ex"
sns.set_theme(rc=ex)

plot = sns.boxplot(data=df_penguins, y="body_mass_g")
plot.figure.show()

请注意,并非所有ex中的设置在这里都有效。例如,hotpink。但我确信这不是我的解决方案的问题。例如,boxplot.notch确实有效。
所以我很抱歉,这只回答了如何修改rcParams通过Seborn,但没有如何修改您的主题的具体方面。

相关问题