Я пытаюсь изменить все элементы шрифта в серии диаграмм, которые я рисую. Мой код похож на
from pathlib import Path
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def plot_group(df, nrow, ncol, size, plot_title):
sns.set(style = "darkgrid")
plt.rcParams['font.size'] = size
fig, axes = plt.subplots(nrow, ncol, figsize=(15, 10), tight_layout=True)
fig.suptitle(plot_title)
n_boxplots = 2
for i in range(nrow):
for j in range(ncol):
current_ax = axes[i, j]
sns.boxplot(data=df[['foo','bar']], palette = "Set2", ax=current_ax)
current_ax.set_title("foo", fontsize=18)
plt.savefig(f'font_size_{size}.png', dpi=75)
plt.close(fig)
nrow = 3
ncol = 3
rng = np.random.default_rng(0)
arr = rng.random((30, 2))
df = pd.DataFrame(data=arr, columns=['foo', 'bar'])
for size in [14, 22]:
plot_title = f"Font size = {size}"
plot_group(df, nrow, ncol, size, plot_title)
Однако это приводит к двум рисункам, где меняется только размер шрифта suptitle, а все остальное остается прежним:
Почему? Как я могу это исправить?






sns.set, sns.set_style и rcParams.
rcParms уже устанавливаются функциями seaborn..set это псевдоним для .set_themercParams, установленное .set_theme, используя параметры, указанные здесь.
sns.set(style = "darkgrid") и plt.rcParams['font.size'] = size и используйте вместо них sns.set_theme(context = {'font.size': size}).
rcParams напрямую при использовании sns.set_theme, похоже, не работает.python 3.11.2, matplotlib 3.7.1, seaborn 0.12.2def plot_group(df, nrow, ncol, size, plot_title):
sns.set_theme(context = {'font.size': size}) # use set_theme
fig, axes = plt.subplots(nrow, ncol, figsize=(15, 10))
axes = axes.flat
fig.suptitle(plot_title)
for ax in axes:
sns.boxplot(data=df, palette = "Set2", ax=ax)
ax.set_title("foo", fontsize=18)
plt.savefig(f'font_size_{size}.png', dpi=75)
plt.close(fig)
nrow = 3
ncol = 3
rng = np.random.default_rng(0)
arr = rng.random((30, 2))
df = pd.DataFrame(data=arr, columns=['foo', 'bar'])
for size in [14, 22]:
plot_title = f"Font size = {size}"
plot_group(df, nrow, ncol, size, plot_title)