[{"2019-08-26": 973, "2019-08-27": 1017, "2019-08-28": 946, "2019-08-29": 939, "2019-08-30": 955, "2019-09-02": 955, "2019-09-03": 983, "2019-09-04": 944, "2019-09-05": 974, "2019-09-07": 978}, {"2019-09-07": 342}, {"2019-08-26": 159, "2019-08-27": 163, "2019-08-28": 147, "2019-08-29": 131, "2019-08-30": 125, "2019-09-02": 153, "2019-09-03": 156, "2019-09-04": 152, "2019-09-05": 150, "2019-09-07": 146}, {"2019-09-07": 43}]
上面的数据是《按日期统计每日告警总量-2》的输出结果,用一个wjj_fm.json文件保存,里面存的一个列表,该列表由四个字典组成,第一个字典是统计全网告警的日期和每日的告警数,第二个字典是最新日期的有告警的站点总数,第三个字典是VIP区域的告警日期和每日告警数,第四个字典是最新日期的VIP区域有告警的站点总数。我们就把1和3两个字典画图展示,思路十分简单,先定义一个画图函数get_plot,然后读取wjj_fm.json文件,获取画图要用的字典1和字典3,最后调用get_plot画图即可。
# -*- encoding=UTF-8 -*-
__author__ = 'wjj1982'
__date__ = '2019/8/10 20:45'
__product__ = 'PyCharm'
__filename__ = 'test'
import matplotlib.pyplot as plt
import json
import os
import warnings
# 会产生一条告警,不知道原因,直接忽略掉了
warnings.filterwarnings('ignore')
# 兼容汉字
plt.rcParams['font.sans-serif'] = ['SimHei']
def get_plot(date_fmsum_dic, title_name):
"""定义画图函数"""
# 设置图框的大小
fig = plt.figure(figsize=(10, 6))
# 绘图
plt.plot(date_fmsum_dic.keys(), # x轴数据
date_fmsum_dic.values(), # y轴数据
linestyle='-', # 折线类型
label='告警总数', # 图例,注意这里要和后面的legend合作使用
linewidth=2, # 折线宽度
color='steelblue', # 折线颜色
marker='o', # 点的形状
markersize=6, # 点的大小
markeredgecolor='red', # 点的边框色
markerfacecolor='steelblue') # 点的填充色
# 添加图例,标题和坐标轴标签。legend的参数loc是个元组前面记录
plt.legend(loc=1)
plt.title(title_name)
plt.xlabel('日期')
plt.ylabel('告警总数')
# 剔除图框上边界和右边界的刻度
plt.tick_params(top='off', right='off')
# 增加栅格,好看点哈
plt.grid(ls='--')
# 显示图形
plt.show()
if __name__ == '__main__':
if os.path.exists('wjj_fm.json'):
with open('wjj_fm.json','r') as rf:
date_fmsum_dict = json.load(rf)
else:
print('wjj_fm.json is not exist!')
title_plot1 = input('输入全部告警日统计图名字:')
title_plot2 = input('输入精品区域告警日统计图名字:')
# 啦啦,可以画图咯,不需要多说了哈,下面画了俩图而已,你懂的
get_plot(date_fmsum_dict[0], title_plot1)
get_plot(date_fmsum_dict[2], title_plot2)
结果如下: