Заполнение в реальном времени matplotlib P ie Диаграмма из базы данных SQLite3? - PullRequest
0 голосов
/ 21 марта 2020

Я пытался создать диаграмму 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)""")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...