#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. привет, спасибо за продолжение 🙂 Я не могу сохранить боковую панель ширины интервала, но я разберусь с этим 🙂