Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scale figure's font with seaborn while preserving matplotlib's style

I have some predefined matplotlibrc style which I use for my plots. Below is a sample image styled with it

enter image description here

On the other hand, I find seaborn's sns.set(font_scale=1.25) quite handy, which allows me to quickly control font sizes.
Yet, while changing the font size it also applies the default seaborn style to my plot, so matplotlib's defaults are overwritten.
I tried sns.set(style=None, font_scale=1.25) instead but line colors and font family of axis labels are still changed.

enter image description here

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

#sns.set(style=None, font_scale=1.25)

fig = plt.figure(figsize=(3.4, 2.1), frameon=False)
fig.tight_layout()

x = np.linspace(0, 2, 500)

ax = fig.add_subplot(111)
ax.set_xlabel('xlabel, some units')
ax.set_ylabel('ylabel, some units')

ax.plot(x, x**0.5, label='$x^{0.5}$')
ax.plot(x, x**1.5, label='$x^{1.5}$')
ax.legend()

fig.savefig('output.png')
plt.close(fig)
like image 210
taras Avatar asked Nov 01 '25 03:11

taras


1 Answers

You are looking for set_context:

sns.set_context("notebook", font_scale=1.25)

This will scale the fonts with respect to the predefined "notebook" style, which seems closest to the matplotlib defaults.

A comparisson:

Default plot:

enter image description here

With sns.set_context(font_scale=1.25):

enter image description here

With sns.set_context("notebook", font_scale=1.25):

enter image description here

like image 81
ImportanceOfBeingErnest Avatar answered Nov 02 '25 17:11

ImportanceOfBeingErnest



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!