matplotlib画多图,使用python,pandas,matplotlib画图监控H3PO4浓度

先上结果:

代码:

import numpy as np
import pandas as pd
import xlrd
import datetime
import matplotlib.pyplot as plt

#数据清洗,num为定义母数
def dataArrange(data,num):
    new_data = pd.DataFrame({"time":data["start"],"mean":data["mean"]})
    ls1,ls2,ls3,ls4 = [],[],[],[]
    len_data = len(new_data["time"])
    for i in range(0,int(len_data/num)):
        ls1.insert(0,new_data["time"][len_data-1-i*num])
        #H3PO4 mean
        ls2.insert(0,new_data["mean"][(len_data-1-(i+1)*num):(len_data-1-i*num)].mean())
        #H3PO4 mean: this - last
        if i == 0:
            ls3.insert(0,0)
        else:
            ls3.insert(0,ls2[1]-ls2[0])
        #3 sigma
        ls4.insert(0,new_data["mean"][(len_data-1-(i+1)*num):(len_data-1-i*num)].std()*3)
    return pd.DataFrame({"time":ls1,"mean":ls2,"slope":ls3,"3sigma":ls4})

#时间转换
def timeTrans(data):
    data["time"] = data["time"].apply(
        lambda x:datetime.datetime.strptime(
            x[0:4]+"-"+x[4:6]+"-"+x[6:8]+" "+x[8:10]+":"+x[10:12]+":"+x[12:14],
            "%Y-%m-%d %H:%M:%S")
    )
    return data

#多图绘制
def multiChart(data,sigma_spec):
    plt.figure(figsize=(12,10))
    plt.subplot(311)
    plt.title("CTC Array FAB H3PO4 Monitor for BP Lack")
    plt.plot(data["time"],data["mean"],color="b",marker="*")
    plt.subplot(312)
    data["slope_spec"]=0
    plt.title("$mean{(y2-y1)}$")
    plt.plot(data["time"],data["slope"],color="b")
    plt.plot(data["time"],data["slope_spec"],color="r")
    plt.subplot(313)
    data["sigma_spec"]=sigma_spec
    plt.title("3$sigma$")
    plt.plot(data["time"],data["3sigma"],color="b")
    plt.plot(data["time"],data["sigma_spec"],color="r")
    plt.show()


file = r"C:\Users\mayn\Desktop\ArrayBP\BPLack.xlsx"
read_file = pd.read_excel(file)
print(read_file.head())
data = dataArrange(read_file,120)
print(data.head())
data["time"] = data["time"].astype(str)
# data = timeTrans(data)
# print(data.head())
#输出清洗后数据
file_path=r"C:\Users\mayn\Desktop\ArrayBP\new_data.xlsx"
data.to_excel(file_path,sheet_name="data")
multiChart(data,0.5)

#原始数据

#输出的数据

猜你喜欢

转载自blog.csdn.net/java_raylu/article/details/84146589