Matplotlib - Граница вокруг точек разброса

max спросил: 12 мая 2018 в 05:00 в: python

Я следую этому руководству.

Я хотел бы использовать Matplotlib для создания графика разброса с точками, которые окрашены внутри, но имеют черную границу, такую ​​как этот график:

Однако, когда я точно копирую код, я получаю этот график.

Вот код:

colors = ['black', 'blue', 'purple', 'yellow', 'white', 'red', 'lime', 'cyan', 'orange', 'gray']
for i in range(len(colors)):
    x = reduced_data_rpca[:, 0][digits.target == i]
    y = reduced_data_rpca[:, 1][digits.target == i]
    plt.scatter(x, y, c=colors[i])
plt.legend(digits.target_names, bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title("PCA Scatter Plot")
plt.show()

Я попытался настроить стиль, но это не помощь.

1 ответ

Есть решение
rth ответил: 12 мая 2018 в 05:09

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

edgecolors: цвет или последовательность цветов, необязательный, по умолчанию: None

Если "Нет", по умолчанию "лицо"

Если "лицо", цвет края всегда будет таким же, как цвет лица.

Если это "нет", граница патча не будет нарисовано.

Для незаполненных маркеров, edgecolors kwarg игнорируется и принудительно "нарушается" внутри.

Итак, в конце концов, вам нужно только plt.scatter(x, y, c=colors[i],edgecolors='b')