У меня есть pandas DataFrame, который содержит следующие интересующие столбцы:
['Relative Width', 'Relative Height', 'Object Name', 'Object ID']
Существует 15 имен объектов с 15 цветами, определенными с помощью df.plot(c='Object ID')
, которые дают следующий рисунок:
![fig](https://i.stack.imgur.com/P859g.png)
Я хочу отобразить легенду с 15 именами объектов, как это можно сделать?
import matplotlib.pyplot as plt
from annotation_parsers import parse_voc_folder
def visualize_box_relative_sizes(folder_path, voc_conf, cache_file='data_set_labels.csv'):
frame = parse_voc_folder(folder_path, voc_conf, cache_file)
title = f'Relative width and height for {frame.shape[0]} boxes.'
frame.plot(
kind='scatter',
x='Relative Width',
y='Relative Height',
title=title,
c='Object ID',
colormap='gist_rainbow',
colorbar=False,
)
plt.show()
Исходя из рекомендации wwnde, я изменил код на следующий:
def visualize_box_relative_sizes(folder_path, voc_conf, cache_file='data_set_labels.csv'):
frame = parse_voc_folder(folder_path, voc_conf, cache_file)
title = f'Relative width and height for {frame.shape[0]} boxes.'
sns.scatterplot(x=frame["Relative Width"], y=frame["Relative Height"], hue=frame["Object Name"])
plt.title(title)
plt.show()
, который дает следующий результат:
![enter image description here](https://i.stack.imgur.com/FXeqc.png)