Раскрашивание минимальных полос в штриховой диаграмме Seaborn FacetGrid - PullRequest
0 голосов
/ 11 июля 2020

Любой простой способ автоматически раскрасить (или пометить любым способом) минимальные / максимальные полосы для каждого графика FacetGrid?

Например, как отметить минимальное значение Z на каждом из следующих 16 участков?

df = pd.DataFrame({'A':[10, 20, 30, 40]*4, 'Y':[1,2,3,4]*4, 'W':range(16), 'Z':range(16)})
g = sns.FacetGrid(df, row="A", col="Y", sharey=False)
g.map(sns.barplot, "W", "Z")
plt.show()

1 Ответ

1 голос
/ 11 июля 2020

Следующий подход проходит по диагональным осям, для каждой оси выполняется поиск минимальной высоты стержней, а затем их цвет:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

df = pd.DataFrame({'A': [10, 20, 30, 40] * 4, 'Y': [1, 2, 3, 4] * 4, 'W': range(16), 'Z': range(16)})
g = sns.FacetGrid(df, row="A", col="Y", sharey=False)
g.map(sns.barplot, "W", "Z")

for i in range(len(g.axes)):
    ax = g.axes[i, i]
    min_height = min([p.get_height() for p in ax.patches])
    for p in ax.patches:
        if p.get_height() == min_height:
            p.set_color('red')
plt.tight_layout()
plt.show()

пример сюжета

...