Я пытаюсь построить график рассеяния в matplotlib, который отображает значения из словаря вместе с отдельными цветами.
В настоящее время у меня есть два словаря
{MAC_Address: ID} и {ID: RANDOM COLOR}
Где каждый Macадрес найден, добавлен в словарь и назначен идентификатор ... этот идентификатор затем можно найти во втором словаре, и можно определить назначенный цвет.
Итак, я пытаюсь определить, как правильно построить график рассеяния с цветами.
Текущий график (нижний), поэтому для каждого значения идентификатора (значения Y) должен быть свой цвет (хранится во втором словаре):
Текущий код
def lescan():
service = DiscoveryService("hci0")
ScanDevices = service.discover(scanTime)
count = 0
time = time + scanTime
# gather mac addresses......then..
for address, name in ScanDevices.items():
count = count + 1
print("\n" + str(count) + " {} --- {}".format(address, name))
addresses.append(format(address))
scatter_time.append(time)
if str(address) in devicesDictionary:
id = devicesDictionary.get(str(address))
scatter_devs.append(id)
else:
id = (len(devicesDictionary) + 1)
devicesDictionary.update( { str(address) : id } )
colour = "#{:06x}".format(random.randint(0, 0xFFFFFF))
colourDictionary.update ( { id : colour })
scatter_devs.append(id)
devices_count.append(count)
def animate(i):
lescan()
# Clear the graph
ax1.clear()
# Plot line graph
ax1.plot(time_passed , devices_count)
# plot scatter graph
ax2.scatter(scatter_time, scatter_devs)
# Run the animation function and show the graph
ani = animation.FuncAnimation(fig, animate, interval=5000)
plt.show()