使用matplotlib画图的一个脚本

准备工作

之前在https://rorschachchan.github.io/2018/02/24/阿里云获取DTS服务延迟的脚本/ 里已经可以获取到阿里云DTS服务的延迟时长和同步速率。下一步就是把这些值以24小时为周期作一个图像,然后每天在固定时间发送到领导们的邮件里。

python作图的第三方工具叫matplotlib,安装步骤如下:

1
2
3
4
pip install matplotlib	#画图模块
pip install numpy #依赖的库
pip install scipy #又一个依赖的库
yum install -y Tkinter #如果是python3,那么就是yum install -y tkinter

脚本内容

由于我是在centos 7里进行脚本操作,而linux服务器有没有安装图像,所以在执行import matplotlib.pyplot as plt的时候可能会爆错:RuntimeError: could not open display,这个时候需要在前面改成如下样式(注意先后顺序):

1
2
3
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

举一个简单的脚本例子如下,就是给予(x,y)然后连成曲线图的效果,脚本里数字的部分不加引号也是可以识别的,当然使用变量也可以。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import pylab as pl

x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
#横坐标的内容
labels=['10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','1','2','3','4','5','6','7','8','9']

a = '1'
b = '2'
c = '3'
d = '4'

#y1是延迟
y1=['2','3','5','4','2','1','2','2','3','5','4','2','1','2','2','3','5','4','2','1','2','2','3','5']

#y2是同步速率
y2=[a,b,c,d,0.13,0.12,0.14,0.14,0.14,0.16,0.15,0.13,0.12,0.14,0.14,0.14,0.16,0.15,0.13,0.12,0.14,0.22,0.18,0.11]

#输入对应的坐标,后面是颜色
plot1,=pl.plot(x,y1,'r') #这里是有逗号的,用于参数解包
plot2,=pl.plot(x,y2,'b')
pl.xticks(x,labels)

#图片的标题以及对应的字号大小
pl.title('The DTS status of Shenzhen VPC',size=20)

#X轴的标题和字号大小
pl.xlabel('Time', size=14)

#Y轴的标题,字号大小和长度
pl.xlabel('Time', size=14)
pl.ylim(0.0,5.0)

#曲线对应注释
pl.legend([plot1,plot2],('Delay','Sync rate'),'best',numpoints=1)

#图片保存路径
plt.savefig('/tmp/dts.png', format='png')

脚本执行效果之后,会在对应的路径里生成一个图片文件,然后把这个图片转移到windows,打开就看到效果了,如图:
paradin

这个图是全英文的,如果是中文的话,就会出现乱码,研究了半天也没搞明白,这一点让我很郁闷。

参考资料

http://python.jobbole.com/81182/
https://absentm.github.io/2017/03/18/Python-matplotlib-数据可视化/
https://liam0205.me/2014/09/11/matplotlib-tutorial-zh-cn/
https://morvanzhou.github.io/tutorials/data-manipulation/plt/1-1-why/
https://www.lookfor404.com/%E8%BF%90%E8%A1%8Cggplot%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98no-display-name-and-no-display-environment-variable/

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------