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
参考公式: ,其中N为列表个数,Yi为列表第i个值,Y代表预测值。