【问题标题】:Why will the python matplotlib graph not show?为什么 python matplotlib 图形不显示?
【发布时间】:2020-02-18 15:20:29
【问题描述】:

由于某种原因,我无法显示 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()

【问题讨论】:

  • 你没有调用任何函数。刚连接到数据库然后关闭连接

标签: python python-3.x sqlite matplotlib graph


【解决方案1】:
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()

输出如下:

问题在于 data_entry 函数插入了一个污染图表的异常值(所有其他日期都插入了今天的日期)。

【讨论】:

  • 不幸的是它给了我无效的语法
  • 没有错误跟踪,只是从 graph_data() 中以红色突出显示和无效的语法消息
  • 不能在 Python 中。这是有效的语法。你是从行首写的吗?
  • 我正在尝试学习本教程youtube.com/…
  • 不要遵循本教程。它的错误越来越多。
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 2017-11-24
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多