Я пытался создать диаграмму matplotlib P ie, которая обновляет данные в реальном времени при вводе данных в базу данных SQLite3. Это забавный инструмент для голосования в реальном времени.
Я наткнулся на несколько скриптов, которые используют FuncAnimation с диаграммами p ie, и несколько видео, которые извлекают данные SQLite3 для графиков реального времени, но я возникли проблемы с их объединением.
Как я настроил инструмент голосования для работы:
Столбец 1 - это человек, который проголосовал, или звание
Столбец 2 - это то, что они проголосовали за
. В столбце 3 указана их ценность для голосования (некоторые роли или звания имеют более высокую ценность для голосования, чем другие, штатный сотрудник может иметь значение для голосования 1, но старший сотрудник имеет значение для голосования 2)
Я хотел бы иметь возможность суммировать все значения столбца 3, соответствующие их метке столбца 2, и сообщать о 10 лучших значениях столбца 3 в диаграмме P ie с меткой столбца 2 в качестве метки графика.
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import sqlite3
conn = sqlite3.connect('vote_tracking.db')
c = conn.cursor()
c.execute("SELECT * FROM vote_tracking")
fig, ax = plt.subplots()
def update(num):
global a
global nums
global explode
global labels
global colors
global colorsadd
ax.clear()
ax.axis('equal')
str_num = str(num)
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #top 10 values of column 3
a=0
explode = []
labels = []
colors = []
colorsadd = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue', 'limegreen',
'red', 'navy', 'blue', 'magenta', 'crimson']
for x in range(len(nums)):
explode.append(0.01)
labels.append(nums[a]) #names in column 2 of top 10 values of column 3
colors.append(colorsadd[a])
a=a+1
ax.pie(nums, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
ani = FuncAnimation(fig, update, frames=range(100), repeat=False) #does this do what I want? I want to update the Pie Chart when a value is added to vote_tracking
plt.show()
Таблица создается в файле voice_tracking.db в том же каталоге с:
("""CREATE TABLE IF NOT EXISTS vote_tracking (username, vote, voteval data_value REAL)""")