Seconds_Behind_Master
简单说一下数据:就是数据库主从同步的时候,从服务器同步比主服务器同步慢了多少秒。因为是每隔5s钟统计一次,如果当前的统计中没有延迟,Seconds_Behind_Master为0,这种情况不做统计。
数据有了,做一个简单的切分。然后画图。
date = "2018-11-08"
ret = []
with open(path, "r+") as f:
for i in f:
_, _, day, second, _, _, _, num = i.split(" ")
if day == date:
ret.append([second.rstrip(','),int(num.rstrip())]) # 预计最多有17280刻度线
label_list, num_list = [i[0] for i in ret], [i[1] for i in ret]
切分完成之后,我们能拿到两个列表。一个是label_list,里面存放的是类似18:00:32 一个是num_list,里面存放的是延迟秒数。
我用的是matplotlib,所以需要导包
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
a = list(range(len(label_list)))
plt.bar(left=a, height=num_list, width=0.4, alpha=0.8, color='red')
# plt.plot(a, num_list)
plt.xticks(a, label_list, rotation=45, fontsize=5)
上面的就是平时正常情况下画的图,
subplot前面俩参数指定的是一个画板被分割成的行和列,后面一个参数则指的是当前正在绘制的编号!
那是个什么编号规则呢?就是 行优先数数规则!
我这里就画了一个图,所以是(1,1)
bar中的两个参数:
left:柱形的左边缘的位置,如果我们指定1那么当前柱形的左边缘的x值就是1.0了
height:这是柱形的高度,也就是Y轴的值了
plt.xticks 就是每个a对应的label_list,这个是为了画出x轴的标签。
但是因为我的数据太多了。
所以画完之后,xticks就过于密集。x轴的坐标太密集。
解决办法找了很久,这里我参考了 一个特别棒的网站
for label in ax.get_xticklabels():
label.set_visible(False)
for label in ax.get_xticklabels()[::20]:
label.set_visible(True)
plt.title(date)
plt.savefig("{}.jpg".format(date), dpi=500)
set_visible(False)是不显示,为True是显示。 这里我先默认所有的都不显示,然后只展示我显示的。
plt.title()是显示标题。
plt.savefig(“1.jpg”, dpi=500)
以500每英寸内的点数(其实就是提升了图片的像素,更容易看)来对图片进行存储。
完成代码见:https://github.com/guowenjia/code_country/tree/master/matplotlib_study
https://www.cnblogs.com/qianlifeng/archive/2012/02/13/2350086.html
http://landcareweb.com/questions/638/geng-gai-matplotlibzhong-xhuo-yzhou-shang-de-di-da-pin-lu