输入的是统计区域内的每日的所有告警汇总,然后处理后得到日期和每日的告警总数,两个方法来进行折线图展示,方法一是用pandas.plot直接画图,但是测试发现横轴不显示日期,纵轴不显示label,明天重点研究下。方法二是用matplot直接画图,这个不如pandas.plot方便,但暂时能满足要求,先记录下吧,明天重点重构下代码,研究下pandas.plot。
# -*- encoding=UTF-8 -*-
__author__ = 'wjj1982'
__date__ = '2019/8/10 20:45'
__product__ = 'PyCharm'
__filename__ = 'test'
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
filename1 = '6大营业厅告警统计_2019-08-05-14-55-19-019.xlsx'
filename2 = '6大营业厅告警统计_2019-08-06-17-37-28-028.xlsx'
filename3 = '6大营业厅告警统计_2019-08-07-10-13-29-029.xlsx'
filename4 = '6大营业厅告警统计_2019-08-08-20-15-40-040.xlsx'
filename5 = '6大营业厅告警统计_2019-08-09-09-10-31-031.xlsx'
filename6 = '精品区域告警统计_2019-08-05-14-55-19-019.xlsx'
filename7 = '精品区域告警统计_2019-08-06-17-37-28-028.xlsx'
filename8 = '精品区域告警统计_2019-08-07-10-13-29-029.xlsx'
filename9 = '精品区域告警统计_2019-08-08-20-15-40-040.xlsx'
filename10 = '精品区域告警统计_2019-08-09-09-10-31-031.xlsx'
filename_list = [filename1, filename2, filename3, filename4, filename5, filename6, filename7, filename8, filename9,
filename10]
date_list = []
fm_sum_yingyeting = []
fm_sum_jingpinqu = []
# print(int(filename_list[1].split('name')[1]))
for index, filename in enumerate(filename_list):
if index < 5:
date_list.append(filename.split('_')[1].split('-')[1] + '-' + filename.split('_')[1].split('-')[2])
fm_sum_yingyeting.append(sum(pd.read_excel(filename, sheet_name='删除断和掉电告警后分类统计')['计数']))
else:
fm_sum_jingpinqu.append(sum(pd.read_excel(filename, sheet_name='删除断和掉电告警后分类统计')['计数']))
df_fm_yingyeting = []
df_fm_jingpinqu = []
for i in range(len(date_list)):
df_fm_yingyeting.append([date_list[i], fm_sum_yingyeting[i]])
df_fm_jingpinqu.append([date_list[i], fm_sum_jingpinqu[i]])
df_fm_yingyeting = pd.DataFrame(df_fm_yingyeting, columns=['日期', '告警总数'])
df_fm_jingpinqu = pd.DataFrame(df_fm_jingpinqu, columns=['日期', '告警总数'])
# 设置图框的大小
fig = plt.figure(figsize=(10,6))
# 绘图
plt.plot(df_fm_yingyeting['日期'], # x轴数据
df_fm_yingyeting['告警总数'], # y轴数据
linestyle = '-', # 折线类型
linewidth = 2, # 折线宽度
color = 'steelblue', # 折线颜色
marker = 'o', # 点的形状
markersize = 2, # 点的大小
markeredgecolor='black', # 点的边框色
markerfacecolor='steelblue') # 点的填充色
# 添加标题和坐标轴标签
plt.title('VIP营业厅每日告警汇总')
plt.xlabel('日期')
plt.ylabel('告警总数')
# 剔除图框上边界和右边界的刻度
plt.tick_params(top = 'off', right = 'off')
# 网格显示
plt.grid(ls='--')
# 显示图形
plt.show()