Nakalizowałem moje dane za pomocą factorplot w seaborn i uzyskać obiekt facetgrid, ale nadal nie może zrozumieć, w jaki sposób można ustawić następujące atrybuty w takiej działce:

  1. Legenda Rozmiar: Kiedy spisuję wiele zmiennych, dostaję bardzo małe legendy, z małymi czcionkami.
  2. Rozmiary czcionek Etykiety Y i X (podobny problem jak powyżej)
68
james pardon 15 sierpień 2014, 18:12

3 odpowiedzi

Najlepsza odpowiedź

Możesz skalować czcionki w rozmowie do 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

109
Paul H 20 lipiec 2015, 22:17

Działka FacetGrid produkuje całkiem małe etykiety. Podczas gdy @ Paul-H opisał użycie sns.set jako sposób na zmianę skalowania czcionek, może nie być optymalnym rozwiązaniem, ponieważ zmieni ustawienie font_scale dla wszystkich działek.

Możesz użyć seaborn.plotting_context, aby zmienić Ustawienia tylko bieżącej działki:

with sns.plotting_context(font_scale=1.5):
    sns.factorplot(x, y ...)
39
achennu 30 grudzień 2014, 23:33

Zrobiłem małe modyfikacje kodu @ Paul-H, takie, że można ustawić rozmiar czcionki dla osi X / Y i legendę niezależnie. Mam nadzieję, że to pomoże:

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

Oto wynik:

enter image description here

8
Sergio Cobo 4 lipiec 2018, 09:02