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)
效果图如下
上一篇: echarts——y轴设置负刻度与x轴与负刻度对齐
下一篇: moment.js获取日期