仅当我尝试使用数据框中 multinomialnb_label 值的 value_counts() 绘制条形图时,有时才会收到此错误。其他时候还好。我不知道如何修复错误。
它是烧瓶应用程序的一部分,一切正常,直到它上线:
my_plot = multinomialnb_count.plot(kind='bar', legend=None)
Run Code Online (Sandbox Code Playgroud)
这是 multinomialnb_count 的详细信息:
[1395 rows x 15 columns]
bug report 721
question 492
praise 112
noise 49
other feedback 21
Name: multinomialnb_label, dtype: int64
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
import matplotlib
matplotlib.use('Agg')
import pandas as pd
import numpy as np
import pymysql.cursors
import sqlalchemy
import datetime
import sys
import re
from wordcloud import WordCloud, STOPWORDS
import preprocessor as p
import nltk
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
from nltk.collocations import *
from nltk.stem import WordNetLemmatizer
import matplotlib.pyplot as plt, mpld3
import matplotlib.dates as dates
import collections
import contractions
from matplotlib import rcParams
def make_charts(username):
rcParams.update({'figure.autolayout': True})
username = username
new_db_name = username + "_predicted_tweets"
# Get tweets from MYSQL database
dbServerName = "localhost"
dbUser = "root"
dbPassword = "woodycool123"
dbName = "azure_support_tweets"
engine = sqlalchemy.create_engine('mysql+pymysql://root:woodycool123@localhost:3306/azure_support_tweets')
df = pd.read_sql_table(new_db_name, engine)
data = pd.DataFrame(df)
multinomialnb_count = data['multinomialnb_label'].value_counts()
my_plot = multinomialnb_count.plot(kind='bar', legend=None)
Run Code Online (Sandbox Code Playgroud)
错误:
ValueError: view limit minimum -0.5 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units
Run Code Online (Sandbox Code Playgroud)
解决了!就像在函数末尾关闭 plt 一样简单plt.close().
这是因为 plt 被配置为进一步向下的时间序列,然后当脚本重新运行时它正在使用它。我认为它会清除所有值,但您必须关闭该 plt 才能使用新的 plt!谢谢