1.需要的库文件

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

2.解决中文文字显示乱码等问题

plt.rcParams['font.sans-serif'] = ['SimHei']  #解决中文显示乱码问题
plt.rcParams['font.family'] = 'sans-serif' #设置字体格式
plt.rcParams['axes.unicode_minus'] = False 

3.读取文件

#读文件
data = pd.read_csv('E:\data\manual\1.csv')

4.读取指定列

    xdata = data.loc[:, '时间'] #横坐标 时间是列名
    # y1data = data.loc[:, '列名1'] #多条曲线的y值 参数名为csv的列名
    y2data = data.loc[:, '列名2']
    y3data = data.loc[:, '列名3']

5.画图曲线的设计

# color可自定义折线颜色,marker可自定义点形状,label为折线标注
    # plt.plot(xdata, y1data, color='r', label=u'1路')#点标记,红色
    plt.plot(xdata, y2data, color='b', label=u'2路')#星形标记,蓝色
    plt.plot(xdata, y3data, color='g', label=u'3路')#上三角标记,绿色

6.曲线图整体设计

    plt.title(u"变化图", size=10)  #曲线标题
    #其中参数loc用于设置legend的位置,bbox_to_anchor用于在bbox_transform坐标(默认轴坐标)中为图例指定任意位置。
    plt.legend(loc=1, bbox_to_anchor=(1.15,1.0),borderaxespad = 0)
    plt.xlabel(u'时间', size=10)
    #设置x轴标签旋转角度和字体大小
    plt.xticks(rotation=10, fontsize=8)
    plt.ylabel(u'温度', size=10)
    plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(80))# 设置横坐标间隔(每隔80个横坐标显示一个横坐标,解决横坐标显示重叠问题)

7.曲线最大最小值绘制

    #绘制曲线最大最小值
    # max1_indx=np.argmax(y1data)#找出曲线1的最大值下标
    # min1_indx=np.argmin(y1data)#最小值下标
    # plt.plot(max1_indx,y1data[max1_indx],'ks')
    # plt.plot(min1_indx,y1data[min1_indx],'gs')

    max2_indx=np.argmax(y2data)#找出曲线2的最大值下标
    min2_indx=np.argmin(y2data)#最小值下标
    plt.plot(max2_indx,y2data[max2_indx],'ks')
    plt.plot(min2_indx,y2data[min2_indx],'gs')

    max3_indx=np.argmax(y3data)#找出曲线3的最大值下标
    min3_indx=np.argmin(y3data)#最小值下标
    plt.plot(max3_indx,y3data[max3_indx],'ks')
    plt.plot(min3_indx,y3data[min3_indx],'gs')

8.曲线图上标注内容

plt.text(0,y1data[max1_indx]+360, "1路最大值:"+str(y1data[max1_indx])+"最小值:"+str(y1data[min1_indx]), size = 10, alpha = 1)
plt.text(100,y2data[max2_indx]-0.5, "2路最大值:"+str(y2data[max2_indx])+"最小值:"+str(y2data[min2_indx]), size = 10, alpha = 1)
plt.text(100,y3data[max2_indx]-0.6, "3路最大值:"+str(y3data[max3_indx])+"最小值:"+str(y3data[min3_indx]), size = 10, alpha = 1)

9.添加辅助虚线

plt.axhline(y=1000.24, ls=":", c="red")  # 添加水平辅助线

10.保存图片

plt.savefig(r'E:\data\manual\processData\lxk\1.jpg')#保存图片

注意:如果要保存图像,保存代码一定要写在显示图像之前,否则会出现保存空白图像的情况。

11.显示画出的图像

plt.show()

12.求均方根函数

def get_rmse(list_y,predict): #求均方根函数,list_y是估计值列表,predict是预测值
    sum = 0
    N = len(list_y)
    for i in range(N):
        sum+=(list_y[i]-predict)**2
    rmse = math.sqrt(sum/N)
    return rmse

参考公式: \frac{1}{N}\sqrt{\sum_{i=1}^{N}(Y_{i}-Y)^{2}},其中N为列表个数,Yi为列表第i个值,Y代表预测值。

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐