Matplotlib, как поменять цвета для голов и линий на сюжете? - PullRequest
2 голосов
/ 04 марта 2020

У меня есть 10 устройств, соединенных проводами, и я использовал matplotlib.plot, чтобы сделать рисунок для этой системы, где состояние этих устройств равно 0. После выполнения кода выдается new_status из 4 уровней. Затем я пытаюсь построить систему на основе нового статуса. Моя проблема в том, что я не могу придумать, как изменить цвет головы и линий. Например, новое состояние устройства 1 теперь равно 3, поэтому цвет головы устройства 1 и цвет линии, соединяющей его с устройством 6, должны быть красным, а устройство 6 по-прежнему синим. Я пытался, если я oop, но я не мог понять это.

x=(1,2,3,4,5,1,2,3,4,5)
y=(1,2,3,4,5,6,7,8,9,10)
status=[0,0,0,0,0,0,0,0,0,0]
new_status=[3,0,0,2,0,0,0,0,4,1]
ax = plt.subplot()
y16 = (y[0], y[5])
x16 = (x[0], x[5])
ax.plot(y16 ,x16, marker='o', color='blue')
y28 = (y[7], y[1])
x28 = (x[7], x[1])
ax.plot(y28, x28, marker='o', color='blue')
y37 = (y[2], y[6])
x37 = (x[2], x[6])
ax.plot(y37, x37, marker='o', color='blue')
y410 = (y[3], y[9])
x410 = (x[3], x[9])
ax.plot(y410, x410, marker='o', color='blue', )
y59 = (y[4], y[8])
x59 = (x[4], x[8])
ax.plot(y59, x59, marker='o', color='blue')
plt.show()

Figure

1 Ответ

1 голос
/ 04 марта 2020

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

x=(1,2,3,4,5,1,2,3,4,5)
y=(1,2,3,4,5,6,7,8,9,10)
status=[0,0,0,0,0,0,0,0,0,0]
new_status=[3,0,0,2,0,0,0,0,4,1]
colours =['r', 'b', 'g', 'y', 'c'] 
y16 = (y[0], y[5])
x16 = (x[0], x[5])
plt.plot(y16 ,x16, marker='o', color=colours[new_status[0]])
plt.plot(y[5], x[5], marker='o', color=colours[new_status[5]])
y28 = (y[7], y[1])
x28 = (x[7], x[1])
plt.plot(y28, x28, marker='o', color=colours[new_status[7]])
plt.plot(y[1], x[1], marker='o', color=colours[new_status[1]])
y37 = (y[2], y[6])
x37 = (x[2], x[6])
plt.plot(y37, x37, marker='o', color=colours[new_status[2]])
plt.plot(y[6], x[6], marker='o', color=colours[new_status[6]])
y410 = (y[3], y[9])
x410 = (x[3], x[9])
plt.plot(y410, x410, marker='o', color=colours[new_status[3]])
plt.plot(y[9], x[9], marker='o', color=colours[new_status[9]])
y59 = (y[4], y[8])
x59 = (x[4], x[8])
plt.plot(y59, x59, marker='o', color=colours[new_status[4]])
plt.plot(y[8], x[8], marker='o', color=colours[new_status[8]])
plt.show()
...