美文网首页
从数据库读取特定日期数据然后进行分析并画图展示之三---按日期画

从数据库读取特定日期数据然后进行分析并画图展示之三---按日期画

作者: 余生还长你别慌 | 来源:发表于2019-09-20 18:13 被阅读0次
[{"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)

结果如下:


精品区.png 全网.png

相关文章

网友评论

      本文标题:从数据库读取特定日期数据然后进行分析并画图展示之三---按日期画

      本文链接:https://www.haomeiwen.com/subject/fzbjuctx.html