Как я могу изменить размер шрифта, используя seaborn FacetGrid?

Я нанес на карту свои данные с factorplot в seaborn и получить facetgrid объект, но все еще не может понять, как следующие атрибуты могут быть установлены в таком графике:

  1. Размер легенды: когда я рисую множество переменных, я получаю очень маленькие легенды с маленькими шрифтами.
  2. Размер шрифта меток y и x (проблема, аналогичная описанной выше)

5 ответов

Решение

Вы можете увеличить шрифты в вашем звонке sns.set(),

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.random.normal(size=37)
y = np.random.lognormal(size=37)

# defaults
sns.set()
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='small')
ax.legend(loc='upper left', bbox_to_anchor=(0, 1.1))

введите описание изображения здесь

sns.set(font_scale=5)  # crazy big
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='big')
ax.legend(loc='upper left', bbox_to_anchor=(0, 1.3))

введите описание изображения здесь

FacetGrid сюжет производит довольно маленькие ярлыки. В то время как @paul-h описал использование sns.set как способ изменения масштабирования шрифта, это не может быть оптимальным решением, так как это изменит font_scale настройка для всех участков.

Вы могли бы использовать seaborn.plotting_context чтобы изменить настройки только для текущего графика:

with sns.plotting_context(font_scale=1.5):
    sns.factorplot(x, y ...)

Я сделал небольшие изменения в коде @paul-H, чтобы вы могли независимо устанавливать размер шрифта для осей x/y и условных обозначений. Надеюсь, поможет:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.random.normal(size=37)
y = np.random.lognormal(size=37)

# defaults                                                                                                         
sns.set()
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='small')
ax.legend(loc='upper left', fontsize=20,bbox_to_anchor=(0, 1.1))
ax.set_xlabel('X_axi',fontsize=20);
ax.set_ylabel('Y_axis',fontsize=20);

plt.show()

Это вывод:

Для легенды, вы можете использовать это

plt.setp(g._legend.get_title(), fontsize=20)

Где g - ваш объект facetgrid, возвращаемый после вызова функции, которая его создает.

Это сработало для меня

      g = sns.catplot(x="X Axis", hue="Class", kind="count", legend=False, data=df, height=5, aspect=7/4)
g.ax.set_xlabel("",fontsize=30)
g.ax.set_ylabel("Count",fontsize=20)
g.ax.tick_params(labelsize=15)

Что не сработало, так это вызвать set_xlabel непосредственно на g, напримерg.set_xlabel()(затем я получил ошибку метода «Facetgrid не имеет set_xlabel»)

Другие вопросы по тегам