Как я могу изменить размер шрифта, используя seaborn FacetGrid?
Я нанес на карту свои данные с factorplot
в seaborn
и получить facetgrid
объект, но все еще не может понять, как следующие атрибуты могут быть установлены в таком графике:
- Размер легенды: когда я рисую множество переменных, я получаю очень маленькие легенды с маленькими шрифтами.
- Размер шрифта меток 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»)