Почему график python matplotlib не отображается? - PullRequest
0 голосов
/ 18 февраля 2020

По какой-то причине я не могу отобразить график matplotlib. Когда я запускаю код, он ничего не выводит и не должен, должен отображаться только график, но это не так. Любая помощь будет высоко ценится. Я пытаюсь получить график для извлечения информации из базы данных, но, к сожалению, не повезло.

import sqlite3
import time
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib import style
style.use('bmh')

conn = sqlite3.connect('tutorial.db')
c = conn.cursor()

def create_table():
    c.execute('CREATE TABLE IF NOT EXISTS stuffToPlot(unix REAL, datestamp TEXT, keyword TEXT, value REAL)')

def data_entry():
        c.execute("INSERT INTO stuffToPlot VALUES(1451255552, '2020-02-18', 'Python', 8)")
        conn.commit()
        c.close()
        conn.close()

def dynamic_data_entry():
    unix = time.time()
    date = str(datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S'))
    keyword = 'Python'
    value = random.randrange(0,10)
    c.execute("INSERT INTO stuffToPlot (unix, datestamp, keyword, value) VALUES (?, ?, ?, ?)",
              (unix, date, keyword, value))
    conn.commit()

def read_from_db():
    c.execute("SELECT keyword, unix FROM stuffToPlot WHERE unix > 1452618731")
    #data = c.fetchall()
    #print(data)
    for row in c.fetchall():
        print(row)

def graph_data():
    c.execute('SELECT unix, value FROM stuffToPlot')
    dates = []
    values = []
    for row in c.fetchall():
        #print(row[0])
        #print(datetime.fromtimestamp(row[0]))
        dates.append(datetime.datetime.fromtimestamp(row[0]))
        values.append(row[1])
    plt.plot_date(dates, values, '-')
    plt.show()


##create_table()
###data_entry()
##for i in range(10):
##    dynamic_data_entry()
##    time.sleep(1)
##read_from_db()
c.close()
conn.close()

1 Ответ

0 голосов
/ 18 февраля 2020
graph_data()

должен решить проблему.

======

Отредактировано. В этом уроке много ошибок. После некоторых выпусков:

import sqlite3
import time
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib import style
style.use('bmh')

conn = sqlite3.connect('tutorial.db')
c = conn.cursor()

def create_table():
    c.execute('CREATE TABLE IF NOT EXISTS stuffToPlot(unix REAL, datestamp TEXT, keyword TEXT, value REAL)')

def data_entry():
        c.execute("INSERT INTO stuffToPlot VALUES(1451255552, '2020-02-18', 'Python', 8)")
        conn.commit()

def dynamic_data_entry():
    unix = time.time()
    date = str(datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S'))
    keyword = 'Python'
    value = random.randrange(0,10)
    c.execute("INSERT INTO stuffToPlot (unix, datestamp, keyword, value) VALUES (?, ?, ?, ?)",
              (unix, date, keyword, value))
    conn.commit()

def read_from_db():
    c.execute("SELECT keyword, unix FROM stuffToPlot WHERE unix > 1452618731")
    for row in c.fetchall():
        print(row)

def graph_data():
    c.execute('SELECT unix, value FROM stuffToPlot')
    dates = []
    values = []
    for row in c.fetchall():
        dates.append(datetime.datetime.fromtimestamp(row[0]))
        values.append(row[1])
    plt.plot_date(dates, values, '-')
    plt.show()


create_table()

for i in range(10):
    dynamic_data_entry()
    time.sleep(1)
read_from_db()
graph_data()

И вывод следующий:

enter image description here

Проблема заключалась в том, что функция data_entry вставляет выброс это загрязнило график (все остальные даты были вставлены с сегодняшней датой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...