Определение цветовых карт оттенков серого в зависимости от количества элементов

Я определил следующий кадр данных:

df=pd.DataFrame(DataMatrix_DCM,columns=['shape','dn','nis','Ds','Ibs','kVsfL','kHL','T_fund','Fa_max'])

и есть plotvars=['nis','Ds','Ibs','kVsfL','kHL']

Я использую повторный сюжет Seaborn для создания графиков. Код выглядит следующим образом:

for vidx,vname in enumerate (plotvars):
g=sns.relplot(x="dn",y="Fa_max",col='shape',hue=vname,col_wrap=2,kind="scatter",palette=**###**,data=df,legend="full",edgecolor=None).set_titles("section shape: {col_name}")

Каждый из параметров, появляющихся поочередно как оттенок, имеет разное количество значений. Я хотел бы определить цветовые палитры для конкретных фигур, все в диапазоне от цветов (cplim1,cplim1,cplim1) до (cplim2,cplim2,cplim2), но с разным количеством элементов в векторе палитры (например, разное количество оттенков серого, но все в диапазоне от (0,0,0) и (0,5,0,5,0,5)).

Я ищу способ автоматизировать определение этих палитр на основе количества уникальных значений в переменной hue. Возможно, используя linspace?


person Woland72    schedule 28.01.2021    source источник


Ответы (1)


Я написал эту функцию, которая успешно генерирует зубчатый массив, определяющий цветовую палитру в оттенках серого:

def greycolorpalette(df,vname):
    colidx=np.argwhere(df.columns.isin([vname])).ravel()
    colpal=np.linspace(0.8,0,num=len(np.unique(df.iloc[:,colidx])))
    colvec=[]
    for cidx,cval in enumerate (colpal):
        colvec.append(np.repeat(cval,3))
    return colvec 
person Woland72    schedule 24.02.2021