Python 为什么matplotlib会在旧图形的基础上绘制新图形?
我正在从事Python 为什么matplotlib会在旧图形的基础上绘制新图形?,python,django,matplotlib,Python,Django,Matplotlib,我正在从事django项目,并使用matplotlib库。理论上,我创建了一个过滤器,您可以在其中选择要绘制的日期和“节点”,并使用此信息执行python脚本,该脚本与pandas和matplotlib一起创建一个图形 价值观“node”和“day”的值正确地到达脚本,这将很好地生成图形。但唯一的错误是,与其覆盖旧图像(使用以前的图形),不如在其上绘制新线。接下来,我将展示它的外观 如您所见,每一行相当于不同的一天,因为它与我所做的不同测试重叠。谁能告诉我哪里失败了 下面我附上代码 def
django
项目,并使用matplotlib
库。理论上,我创建了一个过滤器,您可以在其中选择要绘制的日期和“节点”,并使用此信息执行python
脚本,该脚本与pandas和matplotlib一起创建一个图形
价值观“node”和“day”的值正确地到达脚本,这将很好地生成图形。但唯一的错误是,与其覆盖旧图像(使用以前的图形),不如在其上绘制新线。接下来,我将展示它的外观
如您所见,每一行相当于不同的一天,因为它与我所做的不同测试重叠。谁能告诉我哪里失败了
下面我附上代码
def bateria2(node, day):
csv_path = os.path.join(os.path.dirname(__file__), '..\\data\\csv\\dataframe.csv')
df = pd.read_csv(csv_path)
mes, anyo = 12, 2019
new_df = df[(df['Dia'] == day) & (df['Mes'] == mes) & (df['Año'] == anyo) & (df['Node name'] == node)]
if len(new_df) > 0:
#os.remove('static\\img\\bateria2.png')
x = new_df['Hora[UTC]'].tolist()
y = new_df['Bateria'].tolist()
title = 'Carga/Descarga de la batería día '+str(day)+'/'+str(mes)+'/'+str(anyo)+' de '+str(node)
plt.title(title)
plt.xlabel('Hora [UTC]')
plt.ylabel('Batería')
#plt.legend((y)(node))
plt.plot(x,y)
plt.xticks(x, rotation='vertical')
plt.savefig('static\\img\\bateria2.png',transparent=True)
return 1
else:
return 0
基本上我要做的是访问包含信息的.csv文件,根据我想要的数据进行过滤。如果生成的新dataframe包含数据,则创建图形以最终保存它
非常感谢。在执行savefig命令后,请尝试清除当前图形,
plt.clf()
。这应该可以防止您的绘图相互重叠。一般来说,对于这种情况,我们建议使用OO API而不是pyplot。有人能解释一下为什么在没有解释的情况下投反对票吗?@ImportanceOfBeingErnest您能放一个链接吗?我在google中编写OOAPI,但我不知道我必须找到什么,通过阅读。也。一个明确的例子是