Увеличьте размер НЕКОТОРЫХ маркеров на морском парном графике. - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь изменить размер только НЕКОТОРЫХ маркеров на морском парном графике.

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                  index=['falcon', 'dog', 'spider', 'fish'])

Prettier:

        num_legs  num_wings  num_specimen_seen  class
falcon         2          2                 10      1
dog            4          0                  2      2
spider         8          0                  1      3
fish           0          0                  8      4

Я хочу, например, увеличить размер всех образцов с class = 4. Как это можно было сделать с парным графиком морского дна?

То, что у меня есть:

sns.pairplot(data=df,diag_kind='hist',hue='class')

введите описание изображения здесь

Я попытался добавить plot_kws={"s": 3}, но это изменило размер всех точек. Ура!

1 Ответ

1 голос
/ 28 мая 2020

Проверив, как создается pairplot, можно было бы перебирать оси и изменять размер каждого 4-го набора точек разброса:

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

N = 100
classes = np.random.randint(1, 5, N)
df = pd.DataFrame({'num_legs': 2 * classes  % 8,
                   'num_wings': (classes == 1) * 2,
                   'num_specimen_seen': np.random.randint(1,20,N),
                   'class': classes})
g = sns.pairplot(data=df,diag_kind='hist',hue='class')

for ax in np.ravel(g.axes):
    if len(ax.collections) == 4:
        ax.collections[3].set_sizes([100])
g.fig.legends[0].legendHandles[3].set_sizes([100])

plt.show()

example plot

...