python-matplotlib用法示例
来源:互联网 发布:淘宝48分店铺解封2016 编辑:程序博客网 时间:2024/05/22 05:27
解决中文乱码
首先说一下比较常见的的问题,中文乱码的问题,解决方法如下。
import matplotlib matplotlib.use('qt4agg') from matplotlib.font_manager import * import matplotlib.pyplot as plt #定义自定义字体,文件名从1.b查看系统中文字体中来 myfont = FontProperties(fname='/usr/share/fonts/mcyh/mcyh.ttf') #解决负号'-'显示为方块的问题 matplotlib.rcParams['axes.unicode_minus']=False plt.plot([-1,2,-5,3]) plt.title(u'中文',fontproperties=myfont)
上面的fname需要通过以下命令查看.
fc-list :lang=zh
但是可能不存在中文字体,此时莫慌,进入windows的C:\Winodws\Fonts目录,里面有很多ttf文件,拷贝到以下目录即可。
/usr/share/fonts/
切入正题
- 画折线图 、柱状图的代码如下
#coding=utf-8import matplotlib as matimport sysreload(sys)mat.use('Agg')import matplotlib.pyplot as pltplt.rcdefaults()import numpy as npimport matplotlib.pyplot as pltfrom pylab import *from matplotlib.ticker import FuncFormatter,MaxNLocator import randomsys.setdefaultencoding('utf-8')#data=np.loadtxt(file, delimiter=',')x_pos=range(0,1440)repeat_ratio=[]time=[]for i in range(0, 1440): repeat_ratio.append(random.random())for k in range(24): if k % 3 == 0: hour='%02d' %k min='00' time.append(hour+':'+min) else: time.append('') for i in range(59): time.append('')xticks=range(0, 1441, 180)#设置x轴步长xlabels=[str(n * 3) +':00' for n in range(0, len(xticks), 1)]#x坐标显示的字符plt.figure(num=0, figsize=(20, 10))plt.bar(x_pos, repeat_ratio, align='center', alpha=0.3, facecolor='y')#画柱状图#plt.plot(x_pos, repeat_ratio,'-b')#画折线图plt.ylabel('repeat rate/%')plt.xlim(0,1440)plt.ylim(0, 1)plt.title('Repeat Rate')plt.grid(True)#plt.xticks(np.arange(1440),time)plt.xticks(xticks, xlabels)def percentage_format(x,pos=0): return '%1.2f%%'%(x*100)gca().yaxis.set_major_formatter(FuncFormatter(percentage_format))#纵坐标按百分数输出plt.savefig('repeat.jpg')plt.close(0)
折线图:
柱状图:
2. 下面是封装好了的画折线图、饼图、柱状图的代码。
#coding=utf-8import matplotlib as matimport sysreload(sys)mat.use('Agg')import matplotlib.pyplot as pltplt.rcdefaults()import numpy as npimport matplotlib.pyplot as pltfrom pylab import *from matplotlib.ticker import FuncFormatter,MaxNLocator import randomimport datetimesys.setdefaultencoding('utf-8')folder="pic/"def getYesterday(): #获得当前时间时间戳 today = datetime.date.today() yesterday = today - datetime.timedelta(days=1) #转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S" return yesterday.strftime("%Y-%m-%d")def getYesterday2(): today = datetime.date.today() yesterday = today - datetime.timedelta(days=1) return yesterday.strftime("%Y.%m.%d")def loadData(filename): file = open(filename) return np.loadtxt(file,dtype={'names': ('first', 'second'),'formats': ('i4', 'i8')})#画柱状图def drawReuseBar(data,yesterday,house_number): x = data[:]['first'] y = data[:]['second'] xticks = range(0,60) plt.figure(num=0, figsize=(20, 10)) plt.bar(x,y,align='center', alpha=1, facecolor='b') plt.title("Reuse Time Difference-%s-%d"%(yesterday,house_number)) plt.grid(True) plt.xlabel('Time Difference(minutes)') plt.ylabel('cnt') plt.xlim(0,61) pic_folder="%s%s"%(folder,yesterday) plt.savefig("%s/%s.%d.bar.jpg"%(pic_folder,yesterday,house_number)) plt.close(0)#画饼图def drawReusePie(data,yesterday,house_number): plt.figure(num=2, figsize=(15,15)) ax = axes([0.1, 0.1, 0.8, 0.8]) labels = data[:]['first'] fracs = data[:]['second'] x=[0,0,0,0,0,0,0] y=['0≤ X<10min','10min≤ X<20min','20≤ X<30min','30min≤ X<40min','40min≤ X<50min','50min≤ X<60min','X≥ 60min'] for i in range(0,len(labels)): if(labels[i]!=60): x[(labels[i]-1)/10]+=fracs[i] else: x[6]=fracs[i] x[1],x[4]=x[4],x[1] y[1],y[4]=y[4],y[1] x[3],x[6]=x[6],x[3] y[3],y[6]=y[6],y[3] x[4],x[5]=x[5],x[4] y[4],y[5]=y[5],y[4] explode=(0,0,0,0,0,0,0) plt.pie(x, explode=explode, labels=y, autopct='%1.1f%%', shadow=False,colors=("#00EC00","#0080FF","#A6A600","#D26900","#3C3C3C","#FF359A","#8080C0")) plt.legend() #title('Reuse Distence', bbox={'facecolor':'0.8', 'pad':5}) plt.title("Reuse Time Difference-%s-%d"%(yesterday,house_number)) pic_folder="%s%s"%(folder,yesterday) plt.savefig("%s/%s.%d.pie.jpg"%(pic_folder,yesterday,house_number)) plt.close(2)#画折线图def drawReuseCurve(data,yesterday,house_number): x = data[:]['first'] y = data[:]['second'] xx = [] yy = [] xx.append(0) yy.append(y[0]) xx.append(x[0]) yy.append(y[0]) for i in range(1,len(y)): xx.append(x[i-1]) y[i]+=y[i-1] yy.append(y[i]) xx.append(x[i]) yy.append(y[i]) for i in range(0,len(yy)): yy[i] = yy[i]*1.0/100 for i in range(0,len(y)): y[i] = y[i]*1.0/100 plt.figure(num=1, figsize=(20, 10)) plt.plot(xx, yy,'-b')#画折线图 plt.ylabel('ratio/%') plt.xlabel('Time Difference(minutes)') plt.ylim(0, 1.1) plt.xlim(1,60) plt.title("Reuse Time Difference-%s-%d"%(yesterday,house_number)) plt.grid(True) def percentage_format(x,pos=0): return '%1.2f%%'%(x*100) gca().yaxis.set_major_formatter(FuncFormatter(percentage_format))#纵坐标按百分数输出 pic_folder="%s%s"%(folder,yesterday) plt.savefig("%s/%s.%d.curve.jpg"%(pic_folder,yesterday,house_number)) plt.close(1)def main(): house_id = int(sys.argv[1]) yesterday = getYesterday() filename = "/data/joyyzhang/reuse_result/%d/%s"%(house_id,yesterday) data = loadData(filename) drawReuseBar(data,getYesterday2(),house_id) filename = "/data/joyyzhang/reuse_result/%d/%s.handle"%(house_id,yesterday) file = open(filename) data = np.loadtxt(file,dtype={'names': ('first', 'second'),'formats': ('i4', 'f4')}) drawReusePie(data,getYesterday2(),house_id) drawReuseCurve(data,getYesterday2(),house_id)if __name__ == "__main__": main()
1 0
- python-matplotlib用法示例
- Python Matplotlib画图示例
- python matplotlib简单示例
- python中的matplotlib用法
- Python使用matplotlib绘图示例
- scatter 基本用法 python matplotlib
- Python中的matplotlib用法总结
- 使用python中的Matplotlib绘图示例
- 使用python中的Matplotlib绘图示例(续)
- 【Python-matplotlib】subplot2grid()函数的简单示例
- python matplotlib 库的示例代码
- Python中的matplotlib用法(转载)
- python matplotlib 入门系列一:基本用法
- python学习笔记(十)错误处理、Matplotlib绘图示例
- python matplotlib
- Python-Matplotlib
- Python matplotlib
- python-matplotlib
- android的消息处理机制——Looper,Handler,Message
- 百度搜索框提示功能
- MySQL查询优化-explain
- Xcode Organizational Identifiers
- Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
- python-matplotlib用法示例
- TextView实现跑马灯
- 简单几步让CentOS系统时间同步
- spring定时任务的几种实现
- Spring Security3安全框架的学习
- 人体躯干如何在ZBrush中绘制完成
- php学习笔记-1.登录页面的学习
- iOS极光推送 点击推送消息跳转页面
- Modernizr.js入门指南,检查浏览器对Html5和Css3的语法支持