欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python plt 绘图,双轴设置刻度,步长,使用栅格,以base64格式输出

程序员文章站 2022-05-27 16:06:06
...
def make_plt(context, host, status):
    # 定义y轴展示信息字典
    label1_dict = {'0': 'in_bytes', '1': 'out_bytes', '2': 'all_bytes'}
    label2_dict = {'0': 'in_packets', '1': 'out_packets', '2': 'all_packets'}
    path = MEDIA_ROOT + 'images/' + '0.png'
    # 设置横纵坐标的名称以及对应字体格式
    font_xy = {'family': 'Times New Roman', 'weight': 'normal', 'size': 120}
    # 生成一个(200, 50)大小的图像
    plt.figure(figsize=(220, 50))
    # 获得当前图像的坐标对象
    ax = plt.gca()
    # 将数据填充进图像
    ax.plot(context['time_list'], context['bytes_list'], lw=6, color='blue', label=label1_dict[status])
    ax.set_ylabel(label1_dict[status], fontsize=120)
    # 设置y轴坐标从0开始
    if context['bytes_list']:
        plt.ylim((0, max(context['bytes_list'])))
    # 设置刻度大小
    plt.tick_params(labelsize=80)
    # 设置注释放置位置
    plt.legend(loc=2, fontsize=100)
    # 使用栅格
    plt.grid(color="black", which="both", linestyle=':', linewidth=1)
    plt.fill(color='g', alpha=0.3)

    # 复制兄弟轴
    ax2 = ax.twinx()
    ax2.plot(context['time_list'], context['packets_list'], lw=6, color='red', label=label2_dict[status])
    ax2.set_ylabel(label2_dict[status], fontsize=120)
    # 获得x轴的坐标范围
    start, end = ax.get_xlim()
    # 设置x轴刻度的显示步长
    plt.xticks(np.linspace(start, end, 9))
    # 设置坐标轴名称
    plt.title(host, font_xy)
    # 设置刻度大小
    plt.tick_params(labelsize=80)
    # 剔除图框上边界和右边界的刻度
    plt.tick_params(top='on', right='on')
    # 设置注释放置位置
    plt.legend(loc=0, fontsize=100)

效果图如下

python plt 绘图,双轴设置刻度,步长,使用栅格,以base64格式输出