Я работаю над созданием фасетной сетки Seaborn с данными, которые оставляют некоторые сетки пустыми. Кроме того, я аннотирую каждый фасет некоторой статистикой, однако я не уверен, как пропустить пустые фасеты, чтобы аннотации попадали на правильный фасет.
g.axes.flat
имеет длину 9 (9 фасетов содержат данные); однако, когда я помещаю аннотацию к каждому элементу в g.axes.flat
, она размещается не там, где я ожидал.
g = sns.FacetGrid(mapping, col=options.facetCol, row=options.facetRow, col_order=sorted(cols), hue=options.group, sharex=False)
g = g.map(sns.distplot, options.axis)
# label each facet with stats
grouped = mapping.groupby([options.facetRow, options.facetCol])
for ax, (name, df) in zip(g.axes.flat, grouped):
df2 = df.groupby(options.group) # group by each thing that has its own color and run stats on it
for i, (group, data) in enumerate(df2):
x = data[options.axis]
# calculate stats and create label
n = len(x)
mean = np.mean(x)
std = np.std(x)
label = r"%s: n=%s, $\mu$=%.2f $\sigma$=%.2f" %(group, n, mean, std)
ax.annotate(label, xy=(0.05,0.9-(i*0.05)), xycoords='axes fraction', ha='left', size=8)
РЕДАКТИРОВАТЬ
Я создал функцию аннотации и передаю ее map()
[как рекомендуется]; однако я не уверен, как передать имена меток в функцию и как заставить аннотации (по две для каждого аспекта) сдвигаться в направлении y. Есть еще предложения?
g = g.map(stats, options.axis)
def stats(x, **kwargs):
ax = sns.distplot(x, **kwargs)
# calculate stats and create label
n = len(x)
mean = np.mean(x)
std = np.std(x)
label = r"%s: n=%s, $\mu$=%.2f $\sigma$=%.2f" %('moo', n, mean, std) # temporary label, need to pass it through function
i = 1 # temporary, needs to increment to shift annotations so they aren't on top of each other
# create annotation
ax.annotate(label, xy=(0.05,0.9-(i*0.05)), xycoords='axes fraction', ha='left', size=8)
g.map
. - person mwaskom   schedule 02.07.2015y = .7 if ax.texts else .8
. Я не уверен, что вы имеете в виду, передавая имена меток функции, ноmap
передаст имя уровня оттенка параметруlabel
. - person mwaskom   schedule 02.07.2015