版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37636695/article/details/83271461
从来没有用过Python,以下是复制网上的代码,这个在linux环境下面可能会报错
#coding=UTF-8
#导入需要的模块
import numpy as np
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.ticker as ticker
#读取CSV数据为numpy record array记录
r = mlab.csv2rec('./test.csv')
r.sort()
#形成Y轴坐标数组
N = len(r)
ind = np.arange(N) # the evenly spaced plot indices
#ind1这里是为了把图撑大一点
ind1 = np.arange(N+3)
#将X轴格式化为日期形式,X轴默认为0.5步进,
#这里将整数X轴坐标格式化为日期,.5的不对应日期,
#因为扩展了3格坐标,所以N+的坐标点也不显示日期
def format_date(x, pos=None):
if not x%1 and x<N:
thisind = np.clip(int(x), 0, N-1)
return r.create_date[thisind].strftime('%Y-%m-%d')
else:
return ''
#绘图
fig = plt.figure()
ax = fig.add_subplot(111)
#下行为了将图扩大一点,用白色线隐藏显示
ax.plot(ind1,ind1,'-',color='white')
#正常要显示的bug总数折线
ax.plot(ind, r['90thpct'], 'o-',label='90th-pct')
#正常要显示的bug已解决总数折线
ax.plot(ind, r['95thpct'], 'o-',label='95th-pct')
#正常要显示的bug已关闭总数折线
ax.plot(ind, r['99thpct'], 'o-',label='99th-pct')
#图标的标题
ax.set_title(u"TEST Trend Chart")
#线型示意说明
ax.legend(loc='upper left')
#在折线图上标记数据,-+0.1是为了错开一点显示数据
datadotxy=tuple(zip(ind-0.1,r['90thpct']+0.1))
for dotxy in datadotxy:
ax.annotate(str(int(dotxy[1]-0.1)),xy=dotxy)
#将X轴格式化为日期形式
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
fig.autofmt_xdate()
#显示图片
plt.show()
#将图片保存到指定目录
plt.savefig("./test.png")
1.可能错误
no module named numpy
- 在官网上下载该包:
- 国外的包(经常被墙): http://sourceforge.net/projects/numpy/files/
- csdn下载:http://download.csdn.net/download/hezhenfei8/10047115
解压 tar -zxvf numpy-1.11.2.tar.gz
cd 进入解压后的路径
输入命令:python setup.py install
安装完成
2.接下来有可能错误(缺少依赖)
Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-dev
解决办法
yum install python-dev
- 可能错误一
ImportError: No module named matplotlib.pyplot
python没有安装模块
只需要安装相应的模块即可
yum -y install python-matplotlib
- 可能错误二
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/matplotlib/pyplot.py", line 78, in <module>
new_figure_manager, draw_if_interactive, show = pylab_setup()
File "/usr/lib64/python2.6/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in <module>
from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\
File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtk.py", line 11, in <module>
raise ImportError("Gtk* backend requires pygtk to be installed.")
ImportError: Gtk* backend requires pygtk to be installed.
只需要安装相应的依赖即可:
yum install -tk 将两个以-tk结尾的软件装上
yum install gtk2- 将几个已gtk2开头的软件全装上
3. 接下来可能出现错误
之后报错:
RuntimeError: could not open display
网上有说是因为没有linux界面导致的问题,在有界面上就可以了,参考
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=30199261&id=5204890
解决办法:
最后找到了Linux没有GUI的情况下使用matplotlib绘图,尝试了下果然可以。
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
#而且必须添加在import matplotlib.pyplot之前,否则无效
#最后在plt.draw后面加上
plt.savefig("/home/yourname/picFaster.jpg")
#就可以把绘制的图存为jpg,down到本地查看就行了
最后就可以成功的将csv文件的数据变成想要的统计数据的图片了
支持我的努力