因为excel数据每一组数据(两列)中,作为纵坐标的第二列共有121个数据,对应的第一列作为横坐标范围为0~24,表格中只有整数值,小数对应位置均为空值,所以令横坐标变量time为一个空列表,通过for循环将0-24分为121个节点所得数字填入列表中,得到完整横坐标值,与纵坐标长度一致。
```python
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_excel('C:/Users/lenovo/Desktop/Data.xlsx') #文件路径
# print(data) #dataframe数据格式
# print(data.keys()) #列名即关键字
sample = 121
long = list(range(0, sample))
time = []
for i in long:
time.append(i/5)
# print(type(time)) #time属于list列表
# print(type(data['Actual Load1'])) #dataframe中每一列为一个series,可切片操作
load = data['Actual Load1'][:sample] #excel读取所有表格,包括未填的表格都读为空值,所以需要切片,取出有效序列长度
decline = data['Compensation Decline1'][:sample]
boost = data['Compensation Boost1'][:sample]
plt.figure(figsize=(10, 7)) #指定图片大小,不写matplotlib也会有默认大小
plt.plot(time, load, linewidth=1, label='Actual Load1')
plt.plot(time, decline, linewidth=1, label='Compensation Decline1')
plt.plot(time, boost, linewidth=1, label='Compensation Boost1')
plt.xlabel('Time/h', size=18)
plt.ylabel('Load/KW', fontsize=18) #size和fontsize都可以用来设置字体大小
xtick = [0,4,8,12,16,20,24] #横坐标指定刻度
plt.xticks(xtick)
plt.legend()
plt.savefig('time_load.jpg',dpi=600,format='jpg') #存储图片
plt.show()