Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么matplotlib会在旧图形的基础上绘制新图形?_Python_Django_Matplotlib - Fatal编程技术网

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,但我不知道我必须找到什么,通过阅读。也。一个明确的例子是