Мне нужно нарисовать много крестиков на графике, но есть ли способ не указывать цвет напрямую?

#python #numpy #matplotlib #jupyter

Вопрос:

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

 plt.plot(324,66,'x',color='red',markersize=10)
plt.plot(322,65.5,'x',color='blue',markersize=10)
plt.plot(318,63,'x',color='green',markersize=10)
plt.plot(319.5,65,'x',color='purple',markersize=10)
plt.show()
 

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

Например, я попытался выполнить итерацию с использованием цветовой карты и указать координаты, создав массив, но он не соответствует правильному местоположению:

 x1 = 324,66
x2 = 322,65.5
x3 = 319.5,65
x4 = 318,63

points = np.stack((x1,x2,x3,x4))

color= matplotlib.cm.magma(np.linspace(0,1,4))
for i,c in zip(range(4),color):
    plt.plot(points[i],'x')
plt.show()
 

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

Что я могу делать не так?
Мне нужно нарисовать много крестиков, поэтому я не хочу указывать цвет.

Ответ №1:

Попробуйте seaborn использовать hue параметр:

 x1 = 324,66
x2 = 322,65.5
x3 = 319.5,65
x4 = 318,63
df = pd.DataFrame((x1,x2,x3,x4), columns= ['x', 'y'])
sns.pointplot(x = 'x', y ='y' , data = df , hue = df.index, markers= '*')
 

выход:

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