Настройка парного участка в matplotlib - seaborn - PullRequest
0 голосов
/ 31 мая 2018

У меня трудности с настройкой парного графика.

1) Графики kde в диагонали не окрашены классом

2) Графики в диагонали не соответствуют иобрезаться

3) Я хотел бы контролировать размер шрифта заголовка легенды

Наконец, получить сообщение, которое я не понимаю:

C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\nonparametric\kde.py:494: RuntimeWarning: invalid value encountered in true_divide
  binned = fast_linbin(X,a,b,gridsize)/(delta*nobs)
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\nonparametric\kdetools.py:34: RuntimeWarning: invalid value encountered in double_scalars
  FAC1 = 2*(np.pi*bw/RANGE)**2

Мойкод с использованием воспроизводимого примера здесь:

import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inline
from sklearn import datasets

iris = datasets.load_iris() 

df = np.concatenate( (iris.data,  np.matrix(iris.target).T), axis = 1)

df1 = pd.DataFrame(df, columns = iris.feature_names + ['Class'])

SMALL_SIZE = 20
MEDIUM_SIZE = 25
BIGGER_SIZE = 30

plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=MEDIUM_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title

sns.pairplot(df1, hue = 'Class', diag_kind = 'kde', plot_kws = {'alpha': 0.6, 's': 80, 'edgecolor': 'k'}, size = 6);

enter image description here

Ваш совет будет оценен.

1 Ответ

0 голосов
/ 31 мая 2018

Решить 1) и 2) обновить ваш seaborn до версии 0.8.1.Возможно также обновить matplotlib.

Для решения 3) присвойте парный график переменной g и вызовите

g._legend.get_title().set_fontsize(20)

Для полученного предупреждения это связано с "Классом"столбец является частью сетки.В любом случае это не имеет особого смысла, поэтому оставьте это, указав переменные для сетки, в данном случае vars = iris.feature_names,.

Полный код:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn import datasets

iris = datasets.load_iris() 

df = np.concatenate( (iris.data,  np.matrix(iris.target).T), axis = 1)

df1 = pd.DataFrame(df, columns = iris.feature_names + ['Class'])


g = sns.pairplot(df1, vars = iris.feature_names, hue = 'Class', diag_kind = 'kde', 
             plot_kws = {'alpha': 0.6, 's': 80, 'edgecolor': 'k'}, size = 2);

g._legend.get_title().set_fontsize(20)    
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...