Пузырьковый график по форме для каждого типа разделения данных

#python #matplotlib #seaborn

#python #matplotlib #seaborn

Вопрос:

Я создал пузырьковый график, где я измерил истинные и прогнозируемые значения меток, я хотел знать, можно ли изменить формы графика в соответствии с их разделением данных. Я хочу сохранить цвета моего графика для каждого интервала, но просто изменить форму в соответствии с разделением данных.

Таблица данных

 min            max          y    interval_size   y_pred     split
0.654531    1.021657    0.837415    0.367126    0.838094    train
0.783401    1.261898    1.000000    0.478497    1.022649    valid
-0.166070   0.543749    0.059727    0.709819    0.188840    train
0.493270    1.112610    0.504393    0.619340    0.802940    valid
0.140510    0.572957    0.479063    0.432447    0.356734    train
  

График1

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

График 2

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

Код графика

 plt.figure(figsize=(16,8))

sns.set_context("talk", font_scale=1.1)
plt.figure(figsize=(10,6))
sns.scatterplot(x="y", 
                y="y_pred",
                size="interval_size",            
                data=df,
                alpha=0.65,
                c=interval_size,
                cmap='viridis', 
                hue = 'split',
                s = (interval_size**2)*50)
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.01, 1),borderaxespad=0)
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.01, 0.54),  borderaxespad=0.)

#Plot Characteristics
plt.title("True vs Predicted Labels", fontsize = 36)
plt.xlabel("True Labels", fontsize = 25)
plt.ylabel("Predicted Labels", fontsize = 25)
  

Вопрос:

Было бы неплохо включить данные проверки, как я могу различать по форме, например, треугольник / круг?

Комментарии:

1. В документации к scatterplot функции объясняется, как это сделать: seaborn.pydata.org/generated /…

Ответ №1:

Seaborn обладает множеством подробных настроек, упакованных в простые параметры. Для вашего кода вы просто хотите добавить параметр ключевого слова в вашу функцию sns.scatterplot():

 style = 'split',
  

Это изменит маркеры в соответствии с категориальными значениями, хотя и выберет значения по умолчанию. Если вы хотите больше контролировать конкретные используемые маркеры, вы можете передать другой параметр для сопоставления категориальных значений с определенным маркером:

 markers = {'train': 'X', 'valid':'s'},
  

Коды маркеров можно найти на веб-сайте Matplotlib (https://matplotlib.org/3.1.0/api/markers_api.html ).

Окончательный код должен выглядеть так:

 sns.scatterplot(x="y", 
                y="y_pred",
                size="interval_size",            
                data=df,
                alpha=0.65,
                c=interval_size,
                cmap='viridis', 
                hue = 'split',
                s = (interval_size**2)*50,
                style = 'split',
                markers = {'train': 'X', 'valid':'s'},
)
  

Комментарии:

1. привет, спасибо за продолжение 🙂 Я не могу сохранить боковую панель ширины интервала, но я разберусь с этим 🙂