Подтвердить что ты не робот

Как изменить размер шрифта с помощью Seaborn FacetGrid?

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

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

Ответ 1

Вы можете масштабировать шрифты в своем вызове до 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))

enter image description here

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))

enter image description here

Ответ 2

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

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

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

Ответ 3

Я сделал небольшие изменения в коде @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()

Это вывод:

enter image description here

Ответ 4

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

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

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