python - 为什么 matplotlib 会为我绘制叠加旧图形的新图形?
问题描述
我正在处理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 文件,根据我想要的数据进行过滤。如果生成的新数据框有数据,则创建图表以最终保存它。
非常感谢。
解决方案
plt.clf()
在您的 savefig 命令之后,尝试清除当前图形。这应该可以防止您的地块堆叠在一起。
推荐阅读
- c# - 数据包格式不正确,使用 WSDL 文件从 C# 调用 SAP 服务
- javascript - 通过 id 动态删除输入
- alexa - 如何从alexa技能中获取用户输入
- python - 循环多个 SQL 查询并将输出保存为单个数据帧
- python - 解包 n 级嵌套列表
- html - 角度 p 元素作为模板内的根元素
- c# - 如何在通用 Windows 平台 (UWP) 的任何控制下呈现 MS-Word 文件,而不是在单独的文件中打开它?
- java - BASIC,在调用 %d%n 后不能再输出任何字符串?
- tensorflow - @tf.custom_gradient 处于急切模式,参数复杂
- python - 在 tmux 窗口中生成输出时无法滚动 Ipython(不是笔记本!)