如何用matplotlib读取csv对csv文件绘图

机器学习(20)
这是是用julia来实现绘图,julia有三个绘图库:、、
这里用的是pyplot,其实他是基于matplotlib的
1、首先在juno里安装两个库
juno是julia的集成开放环境(IDE)
没有安装juno的请看这里:
在juno中安装这两个库:直接ctrl+Enter运行就成了
[python]&&
2、然后写一个csv文件作为读入数据,随便撸点啥~~~
注意第一行不要填数据,julia将默认其为表头
3、然后就是代码:
[python]&&
没错!这就是全部的代码!你可以看到julia绘图是多么简单的事情。
ctrl+a 全选 ctrl+enter 运行,下面那张货就蹦出来了。。
4、画好之后可以看到下图的效果,点击保存svg格式
5、转换成emf格式
由于matplotlib在某某版本以后就不支持emf格式输出了。这里需要另一个软件来转换格式,这是一个十分强大的开源软件!
可以在这里下载inkscape:
安装完之后直接另存为emf格式就行了~
6、导入word
插入图片-&选择你的emf图片
看见了吗!!!我放大了5倍,图片中的文字还是清晰可见(废话,因为是矢量图的,有点脑子吧~)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:123718次
积分:3847
积分:3847
排名:第8126名
原创:245篇
转载:164篇
(5)(5)(23)(23)(51)(18)(10)(9)(8)(35)(44)(33)(43)(102)(1)专题:Python&matplotlib&绘制股票走势图
一、matplotlib基本使用
参考:/idea/matplotlib.html
/idea/getting-started-building-a-fully-automated-trading-system.html
1.导入绘图库
import matplotlib.pyplot as
2.创建图表对象
fig = plt.figure()
3.增加子图
ax = fig.add_subplot(1,1,1)
参数说明:三个参数分别为numrows, numcols,
fignum,一共有numrows*numcols个子图,即将图表分为N行*M列,fugnum标识了该子图的顺序。
4.plot方法在子图上绘制
plt.plot([1,2,3,4],[2,3,4,5])
第一个数组标识了X坐标的值为1到4,第二个数组标识了对应的值为2到5。
5.增加标题和坐标轴说明
fig.suptitle("figure title",fontsize
= 14, fontweight="bold")
ax.set_title("axes title")
ax.set_xlabel("x label")
ax.set_ylabel("y label")
plt.show()
二、股价基本走势图
1.numpy数组
numpy是常用的数据处理库,下面代码表示将000001.SZ的股价数据(时间范围从150930)导入到csv中,然后通过numpy读取得到日期和价格数组。csv文件中包含了两列,日期和价格,分割符号为",",读取过程代码如下:
date,close =
np.loadtxt(filename,delimiter=",", unpack = True, converters =
{0:mdates.strpdate2num('%Y-%m-%d')})
注:numpy的loadtxt方法:设定了文件中的分隔符号为“,”,unpack表示是否将数组拆分,True为拆分,即:得到两个数组分别表示日期和收盘价格,converters是将日期类型的字符串转为数组,因为numpy规定其数组中的类型需要一致。
2.绘制基础走势图
ax1.plot(dates,close)
3.将数值类型的日期转为日期类型
ax1.xaxis.set_major_locator(mdates.DayLocator(bymonthday=range(1,32),
interval = 15))
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
for label in
ax1.xaxis.get_ticklabels():
label.set_roration(45)
注:X-轴设置主要刻度locator为每日刻度,格式为DateFormatter("%Y-%m-%d")),每日刻度从第1日到第30日,间隔为15日。其中,对于X-轴上面的每个ticker标签都向右倾斜45度
也可以按照每月进行显示,X—轴设置主要刻度为每月刻度,格式为:DateFormatter("%Y-%m")
ax1.xaxis.set_major_locator(mdates.MonthLocator())
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
4.图形边框调整
plt.subplots_adjust(bottom=0.13,
5.绘制价格平均线
注:利用ta-lib证券技术指标库,绘制5日和10日价格平均线。
ta-lib中提供了方法talib.SMA得到价格简单平均线,timeperiod为时间参数,timeperiod = 5
为5日均线,基于上图增加五日和10日均线。
sma5 = talib.SMA(close, timeperiod =
ax1.plot(dates,sma5)
sma10 = talib.SMA(close,timeperiod=
ax1.plot(dates, smal10)
6.在右上角增加图例和图表的网格效果
plt.legend(('daily','SMA5','SMA10'))
plt.grid(True)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。python处理csv数据的方法
作者:kirkversion1
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了python处理csv数据的方法,实例分析了Python处理csv数据的技巧,需要的朋友可以参考下
本文实例讲述了python处理csv数据的方法。分享给大家供大家参考。具体如下:
Python代码:
#coding=utf-8
__author__ = 'dehua.li'
from datetime import *
import datetime
import csv
import sys
import time
import string
import os.path
import pylab as plt
rootdir='/nethome/dehua.li/orderlifeCycleData/xingzheng'
writeFileDir="/nethome/dehua.li/orderlifeMyWork/xingzheng/csv"
heyueFile="/nethome/dehua.li/orderlifeCycleData/heyue_150128.csv"
ms_acked="1"
def getTheDate(date):
&&& [filenamePart1,filenamePart2]=string.split(filename,'.')
&&& [filenamePart11,filenamePart12,filenamePart13]=string.split(filenamePart1,'_')
&&& return filenamePart13
LocalTime=datetime.datetime.fromtimestamp(time.mktime(time.strptime(" 20:59:59","%Y-%m-%d %H:%M:%S")))
for parent,dirname,filenames in os.walk(rootdir):
&&& for filename in filenames:
&&&&&&& fileNameWrite=os.path.join(writeFileDir,filename)
&&&&&&& print fileNameWrite
&&&&&&& csvfile00=open(fileNameWrite,'wb')
&&&&&&& writer1=csv.writer(csvfile00)
&&&&&&& writer1.writerow(['FeedCode','OrderId','Status','LocalTime','Time','Exchange'])
&&&&&&& fileName=os.path.join(parent,filename)
&&&&&&& [filenamePart1,filenamePart2]=string.split(filename,'.')
&&&&&&& [filenamePart11,filenamePart12,filenamePart13]=string.split(filenamePart1,'_')
&&&&&&& #filenamePart11_filenamePart12_filenamePart13.filenamePart2:dongzheng_orderlifeCycleData_.csv
&&&&&&& print fileName
&&&&&&& with open(fileName,'rb') as csvfile:
&&&&&&&&&&& reader=csv.reader(csvfile)
&&&&&&&&&&& CsvItem=[row for row in reader]
&&&&&&&&&&& for item in CsvItem:
&&&&&&&&&&&&&&& if item[3]=='TPO':
&&&&&&&&&&&&&&&&&&& #print " filter TPO "
&&&&&&&&&&&&&&&&&&& continue
&&&&&&&&&&&&&&& if item[12]=='Sent':
&&&&&&&&&&&&&&&&&&& [tm_local,ms_local]=string.split(item[15],'.')
&&&&&&&&&&&&&&&&&&& [tm_localup,ms_localup]=string.split(item[19],'.')
&&&&&&&&&&&&&&&&&&& LocalTime=datetime.datetime.fromtimestamp(time.mktime(time.strptime(tm_local,"%Y-%m-%d %H:%M:%S")))
&&&&&&&&&&&&&&&&&&& LocalUpdate=datetime.datetime.fromtimestamp(time.mktime(time.strptime(tm_localup,"%Y-%m-%d %H:%M:%S")))
&&&&&&&&&&&&&&&&&&& tm=int(((LocalTime-LocalUpdate).seconds))*1000
&&&&&&&&&&&&&&&&&&& ms_sent=str(int(ms_local)-int(ms_localup)+tm)
&&&&&&&&&&&&&&&&&&& if int(ms_sent)&10*60*1000:
&&&&&&&&&&&&&&&&&&&&&&& print "ms_sent&600000"
&&&&&&&&&&&&&&&&&&&&&&& continue
&&&&&&&&&&&&&&&&&&& if(int(ms_local)-int(ms_localup)+tm)&0:
&&&&&&&&&&&&&&&&&&&&&&& print 'wrong1'
&&&&&&&&&&&&&&&&&&& msg=[]
&&&&&&&&&&&&&&&&&&& msg.append(item[0])
&&&&&&&&&&&&&&&&&&& msg.append(item[1])
&&&&&&&&&&&&&&&&&&& msg.append(item[12])
&&&&&&&&&&&&&&&&&&& msg.append(item[15])
&&&&&&&&&&&&&&&&&&& msg.append(ms_sent)
&&&&&&&&&&&&&&&&&&& with open(heyueFile,'rb') as csvfile1:
&&&&&&&&&&&&&&&&&&&&&&& reader=csv.reader(csvfile1)
&&&&&&&&&&&&&&&&&&&&&&& CsvItem=[row for row in reader]
&&&&&&&&&&&&&&&&&&&&&&& for Item in CsvItem:
&&&&&&&&&&&&&&&&&&&&&&&&&&& if Item[1]==item[0]:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(Item[3])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& writer1.writerow(msg)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #print 'write ok'
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ex=Item[3]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& break
&&&&&&&&&&&&&&&&&&& csvfile1.close()
&&&&&&&&&&&&&&&&&&& with open(fileName,'rb') as csvfile22:
&&&&&&&&&&&&&&&&&&&&&&& reader=csv.reader(csvfile22)
&&&&&&&&&&&&&&&&&&&&&&& CsvItem2=[row for row in reader]
&&&&&&&&&&&&&&&&&&&&&&& for item_ in CsvItem2:
&&&&&&&&&&&&&&&&&&&&&&&&&&& if item_[12]=='Acked' and item_[1]==item[1]:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& [tm_local2,ms_local2]=string.split(item_[15],'.')
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& LocalTime2=datetime.datetime.fromtimestamp(time.mktime(time.strptime(tm_local2,"%Y-%m-%d %H:%M:%S")))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tm2=int(((LocalTime2-LocalTime).seconds))*1000
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ms_acked=str(int(ms_local2)-int(ms_local)+tm2)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if int(ms_acked)&10*60*1000:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& print "MSacked&600000"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& continue
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg=[]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(item_[0])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(item_[1])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(item_[12])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(item_[15])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(ms_acked)
&&&&&&&&&&&&&&&&&&& with open(heyueFile,'rb') as csvfile111:
&&&&&&&&&&&&&&&&&&&&&&& reader=csv.reader(csvfile111)
&&&&&&&&&&&&&&&&&&&&&&& CsvItem=[row for row in reader]
&&&&&&&&&&&&&&&&&&&&&&& for Item in CsvItem:
&&&&&&&&&&&&&&&&&&&&&&&&&&& if Item[1]==item[0]:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& msg.append(Item[3])
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& writer1.writerow(msg)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #print 'write ok'
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& break
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #print "write ok"
&&&&&&&&&&&&&&&&&&& csvfile22.close()
&&&&&&& csvfile.close()
&&&&&&& csvfile00.close()
#coding=utf-8
#__author__ = 'dehua.li'
from datetime import *
import datetime
import csv
import sys
import time
import string
import os.path
import pylab as plt
def median(lst):
&&& even = (0 if len(lst) % 2 else 1) + 1
&&& half = (len(lst) - 1) / 2
&&& return sum(sorted(lst)[half:half + even]) / float(even)
def mean(lst):
&&& if len(lst)==0:
&&&&&&& return 0
&&& return sum(lst)/len(lst)
nightLine="21:01:00"
morningLine="09:01:00"
def getTheDate(date):
&&& [filenamePart1,filenamePart2]=string.split(filename,'.')
&&& [filenamePart11,filenamePart12,filenamePart13]=string.split(filenamePart1,'_')
&&& return filenamePart13
def afterOneMin(time):
&&& [tm_local,ms_local]=string.split(time,'.')
&&& [ymd,hms]=string.split(tm_local,' ')
&&& flag=0
&&& if hms&"21:01:00":
&&&&&&& flag=1
&&& elif hms&"09:01:00" and hms&"20:00:00":
&&&&&&& flag=1
&&& elif hms&"00:00:00" and hms&"05:00:00":
&&&&&&& flag=1
&&& return flag
rootdir="/nethome/dehua.li/orderlifeMyWork/xingzheng/csv"
#csvfileMaxMin = open('e:\dehua.li\csv\__xingzhenMaxMin.csv','wb')
#writer1 = csv.writer(csvfileMaxMin)
#writer1.writerow(['FeedCode','date','SentMaxTime','SentMaxLocalTime','SentMinTime','SentMinLocalTime','SentMeanTime','SentMedian','AckedMaxTime','AckedMaxLocalTime','AckedMinTime','AckedMinLocalTime','AckedMeanTime','AckedMedianTime','Exchange'])
#writer1.writerow(['FeedCode','date','SentMaxTime','SentMinTime','SentMeanTime','SentMedian','AckedMaxTime','AckedMinTime','AckedMeanTime','AckedMedianTime','Exchange'])
codeList=list()
orderList=list()
itemSentList=[]
itemAckedList=[]
feedCode=[]
exchange=[]
zhengshangSentMedian=0
zhengshangSentMean=0
zhengshangAckedMedian=0
zhengshangAckedMean=0
dashangSentMedian=0
dashangSentMean=0
dashangAckedMedian=0
dashangAckedMean=0
shangqiSentMedian=0
shangqiSentMean=0
shangqiAckedMedian=0
shangqiAckedMean=0
zhongjinSentMedian=0
zhongjinSentMean=0
zhongjinAckedMedian=0
zhongjinAckedMean=0
zhengshangSent=[]
zhengshangAcked=[]
dashangSent=[]
dashangAcked=[]
shangqiSent=[]
shangqiAcked=[]
zhongjinSent=[]
zhongjinAcked=[]
zhengshangSentMedianAll=[]
zhengshangSentMeanAll=[]
zhengshangAckedMedianAll=[]
zhengshangAckedMeanAll=[]
dashangSentMedianAll=[]
dashangSentMeanAll=[]
dashangAckedMedianAll=[]
dashangAckedMeanAll=[]
shangqiSentMedianAll=[]
shangqiSentMeanAll=[]
shangqiAckedMedianAll=[]
shangqiAckedMeanAll=[]
zhongjinSentMedianAll=[]
zhongjinSentMeanAll=[]
zhongjinAckedMedianAll=[]
zhongjinAckedMeanAll=[]
zhengshang='0'
dashang='0'
shangqi='0'
zhongjin='0'
with open('/nethome/dehua.li/orderlifeCycleData/heyue_150128.csv','rb') as csvfile:
&&& reader=csv.reader(csvfile)
&&& csvItem=[row for row in reader]
&&& zhengshang=csvItem[300][3]
&&& dashang=csvItem[5][3]
&&& shangqi=csvItem[165][3]
&&& zhongjin=csvItem[435][3]
&&& #for item in csvItem:
&&& #&&& if item[3]==zhengshang:
&&&& #&&&&&& print item
for parent,dirname,filenames in os.walk(rootdir):
&&& for filename in filenames:
&&&&&&& fileName=os.path.join(rootdir,filename)
&&&&&&& csvfile1=open(fileName,'rb')
&&&&&&& reader=csv.reader(csvfile1)
&&&&&&& CsvItem=[row for row in reader]
&&&&&&& for item in CsvItem:
&&&&&&&&&&& if item[0]=='FeedCode':
&&&&&&&&&&&&&&& continue
&&&&&&&&&&& if item[0] not in codeList:
&&&&&&&&&&&&&&& codeList.append(item[0])
&&&&&&&&&&&&&&& #print CsvItem[15]
&&&&&&&&&&& if len(item)&=5:
&&&&&&&&&&&&&&& print fileName
&&&&&&&&&&&&&&& print item
&&&&&&&&&&&&&&& print '++++++++++++++++++++++++++++++'
&&&&&&&&&&& #if afterOneMin(item[3])==0:
&&&&&&&&&&& #&&& print item[3]
&&&&&&&&&&& #&&& continue
&&&&&&&&&&& if item[5]==zhengshang and item[2]=='Sent':
&&&&&&&&&&&&&&& zhengshangSent.append(int(item[4]))
&&&&&&&&&&& elif item[5]==zhengshang and item[2]=='Acked':
&&&&&&&&&&&&&&& zhengshangAcked.append(int(item[4]))
&&&&&&&&&&& elif item[5]==dashang and item[2]=='Sent':
&&&&&&&&&&&&&&&& dashangSent.append(int(item[4]))
&&&&&&&&&&& elif item[5]==dashang and item[2]=='Acked':
&&&&&&&&&&&&&&&& dashangAcked.append(int(item[4]))
&&&&&&&&&&& elif item[5]==shangqi and item[2]=='Sent':
&&&&&&&&&&&&&&&& shangqiSent.append(int(item[4]))
&&&&&&&&&&&&&&&& if int(item[4])&=600000:
&&&&&&&&&&&&&&&&&&&& print "------------"
&&&&&&&&&&&&&&&&&&&& print item
&&&&&&&&&&& elif item[5]==shangqi and item[2]=='Acked':
&&&&&&&&&&&&&&&& shangqiAcked.append(int(item[4]))
&&&&&&&&&&& elif item[5]==zhongjin and item[2]=='Sent':
&&&&&&&&&&&&&&&& zhongjinSent.append(int(item[4]))
&&&&&&&&&&& elif item[5]==zhongjin and item[2]=='Acked':
&&&&&&&&&&&&&&&& zhongjinAcked.append(int(item[4]))
&&&&&&&&&&& else:
&&&&&&&&&&&&&&&& print "wrong info"
&&&&&&&&&&&&&&&& print item
&&&&&&& if mean(shangqiSent)&420000:
&&&&&&&&&&& print sum(shangqiSent)
&&&&&&&&&&& print len(shangqiSent)
&&&&&&&&&&& print item
&&&&&&&&&&& print fileName
&&&&&&&&&&& print shangqiSent
&&&&&&& zhengshangSentMedian=median(zhengshangSent)
&&&&&&& zhengshangSentMean=mean(zhengshangSent)
&&&&&&& zhengshangAckedMedian=median(zhengshangAcked)
&&&&&&& zhengshangAckedMean=mean(zhengshangAcked)
&&&&&&& dashangSentMedian=median(dashangSent)
&&&&&&& dashangSentMean=mean(dashangSent)
&&&&&&& dashangAckedMedian=median(dashangAcked)
&&&&&&& dashangAckedMean=mean(dashangAcked)
&&&&&&& shangqiSentMedian=median(shangqiSent)
&&&&&&& shangqiSentMean=mean(shangqiSent)
&&&&&&& shangqiAckedMedian=median(shangqiAcked)
&&&&&&& shangqiAckedMean=mean(shangqiAcked)
&&&&&&& zhongjinSentMedian=median(zhongjinSent)
&&&&&&& zhongjinSentMean=mean(zhongjinSent)
&&&&&&& zhongjinAckedMedian=median(zhongjinAcked)
&&&&&&& zhongjinAckedMean=mean(zhongjinAcked)
&&&&&&& #if mean(shangqiSent)&70:
&&&&&&& #&&& print '================================'
&&&&&&& #&&& print fileName
&&&&&&& #print codeList
&&&&&&& '''
&&&&&&& for listItem in codeList:
&&&&&&&&&&& itemSentList=[]
&&&&&&&&&&& itemAckedList=[]
&&&&&&&&&&& for item in CsvItem:
&&&&&&&&&&&&&&& if item[0]==listItem and item[2]=='Sent':
&&&&&&&&&&&&&&&&&&& itemSentList.append(int(item[4]))
&&&&&&&&&&&&&&&&&&& exchange=item[5]
&&&&&&&&&&&&&&& elif& item[0]==listItem and item[2]=='Acked':
&&&&&&&&&&&&&&&&&&& itemAckedList.append(int(item[4]))
&&&&&&&&&&& #print itemSentList
&&&&&&&&&&& itemMaxSent=max(itemSentList)
&&&&&&&&&&& itemMinSent=min(itemSentList)
&&&&&&&&&&& itemAvgSent=sum(itemSentList)/len(itemSentList)
&&&&&&&&&&& itemMaxAcked=max(itemAckedList)
&&&&&&&&&&& itemMinAcked=min(itemAckedList)
&&&&&&&&&&& itemAvgAcked=sum(itemAckedList)/len(itemAckedList)
&&&&&&&&&&& SentMedian=median(itemSentList)
&&&&&&&&&&& AckedMedian=median(itemAckedList)
&&&&&&&&&&& msg=[]
&&&&&&&&&&& msg.append(listItem)&&&&&&&& #0
&&&&&&&&&&& msg.append("")&& #1
&&&&&&&&&&& msg.append(itemMaxSent)&&&& #2
&&&&&&&&&&& msg.append(itemMinSent)&&&& #3
&&&&&&&&&&& msg.append(itemAvgSent)&&&& #4
&&&&&&&&&&& msg.append(SentMedian)&&&& #5
&&&&&&&&&&& msg.append(itemMaxAcked)&&& #6
&&&&&&&&&&& msg.append(itemMinAcked)&&&& #7
&&&&&&&&&&& msg.append(itemAvgAcked)&&&& #8
&&&&&&&&&&& msg.append(AckedMedian)&&&&& #9
&&&&&&&&&&& msg.append(exchange)&&&&&&&&& #10
&&&&&&&&&&& if len(msg)&15:
&&&&&&&&&&&&&& print "------------------------------"
&&&&&&&&&&&&&& print msg
&&&&&&&&&&& writer1.writerow(msg)
&&&&&&&& '''
&&&&&&& zhengshangSentMedianAll.append(zhengshangSentMedian)
&&&&&&& zhengshangSentMeanAll.append(zhengshangSentMean)
&&&&&&& zhengshangAckedMedianAll.append(zhengshangAckedMedian)
&&&&&&& zhengshangAckedMeanAll.append(zhengshangAckedMean)
&&&&&&& dashangSentMedianAll.append(dashangSentMedian)
&&&&&&& dashangSentMeanAll.append(dashangSentMean)
&&&&&&& dashangAckedMedianAll.append(dashangAckedMedian)
&&&&&&& dashangAckedMeanAll.append(dashangAckedMean)
&&&&&&& shangqiSentMedianAll.append(shangqiSentMedian)
&&&&&&& shangqiSentMeanAll.append(shangqiSentMean)
&&&&&&& shangqiAckedMedianAll.append(shangqiAckedMedian)
&&&&&&& shangqiAckedMeanAll.append(shangqiAckedMean)
&&&&&&& zhongjinSentMedianAll.append(zhongjinSentMedian)
&&&&&&& zhongjinSentMeanAll.append(zhongjinSentMean)
&&&&&&& zhongjinAckedMedianAll.append(zhongjinAckedMedian)
&&&&&&& zhongjinAckedMeanAll.append(zhongjinAckedMean)
plt.figure(1)
plt.figure(2)
plt.figure(3)
plt.figure(4)
plt.figure(1)
plt.title('SentMean r-zhengshang b-dashang,green-shangqi grey-zhongjin')
plt.plot(range(1,len(zhengshangSentMeanAll)+1),zhengshangSentMeanAll,'r')
plt.plot(range(1,len(dashangSentMeanAll)+1),dashangSentMeanAll,'b')
plt.plot(range(1,len(shangqiSentMeanAll)+1),shangqiSentMeanAll,'g')
plt.plot(range(1,len(zhongjinSentMeanAll)+1),zhongjinSentMeanAll,'grey')
plt.savefig('/nethome/dehua.li/orderlifeMyWork/xingzheng/data_noTPO_in10minutes/SentMean.png')
plt.figure(2)
plt.title('SentMedian r-zhengshang b-dashang,green-shangqi grey-zhongjin')
plt.plot(range(1,len(zhengshangSentMedianAll)+1),zhengshangSentMedianAll,'r')
plt.plot(range(1,len(dashangSentMedianAll)+1),dashangSentMedianAll,'b')
plt.plot(range(1,len(shangqiSentMedianAll)+1),shangqiSentMedianAll,'g')
plt.plot(range(1,len(zhongjinSentMedianAll)+1),zhongjinSentMedianAll,'grey')
plt.savefig('/nethome/dehua.li/orderlifeMyWork/xingzheng/data_noTPO_in10minutes/SentMedian.png')
plt.figure(3)
plt.title('AckedMean r-zhengshang b-dashang,green-shangqi grey-zhongjin')
plt.plot(range(1,len(zhengshangAckedMeanAll)+1),zhengshangAckedMeanAll,'r')
plt.plot(range(1,len(dashangAckedMeanAll)+1),dashangAckedMeanAll,'b')
plt.plot(range(1,len(shangqiAckedMeanAll)+1),shangqiAckedMeanAll,'g')
plt.plot(range(1,len(zhongjinAckedMeanAll)+1),zhongjinAckedMeanAll,'grey')
plt.savefig('/nethome/dehua.li/orderlifeMyWork/xingzheng/data_noTPO_in10minutes/AckedMean.png')
plt.figure(4)
plt.title('AckedMedian r-zhengshang b-dashang,green-shangqi grey-zhongjin')
plt.plot(range(1,len(zhengshangAckedMedianAll)+1),zhengshangAckedMedianAll,'r')
plt.plot(range(1,len(dashangAckedMedianAll)+1),dashangAckedMedianAll,'b')
plt.plot(range(1,len(shangqiAckedMedianAll)+1),shangqiAckedMedianAll,'g')
plt.plot(range(1,len(zhongjinAckedMedianAll)+1),zhongjinAckedMedianAll,'grey')
plt.savefig('/nethome/dehua.li/orderlifeMyWork/xingzheng/data_noTPO_in10minutes/AckedMedian.png')
plt.show()
print 'over'
希望本文所述对大家的Python程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具matplotlib(1)
Matplotlib绘图和可视化
matplotlib API 入门
绘图是数据分析工作中最重要的任务之一,是探索过程中的一部分。例如帮助我们找出异常值、必要的数据转化、得出有关模型的idea等。Python有许多可视化工具,但是这里主要讲解matplotlib()。matpllotlib API函数(如plot和close)都位于matplotlib.pyplot模块中,其通常的引入约定是:
&&&import matplotlib.pyplot as plt
Figure和Subplot
matplotlib的图像都位于Figure对象中。可以用plt.figure创建一个新的Figure:
&&&fig = plt.figure()
&&&plt.show()
这时会弹出一个空窗口。
plt.figure有一些选项,特别是figsize,它用于确保当图片保存到磁盘时具有一定大小的纵横比。值得注意的是,不能通过空figure绘图,必须用add_subplot创建一个或者多个subplot才行:
&&&ax1 = fig.add_subplot(2,2,1)
这条代码的意思是:图像应该是2*2的(即有2行2列,定义了图像的位置),且当前选中的是第一个,(编号从一开始)。如果再把后面两个subplot也创建出来,最终得到的图像如图:
&&&ax2 = fig.add_subplot(2,2,2)
&&&ax3 = fig.add_subplot(2,2,3)
&&&plt.show()
如果这时发出一条绘图命令(如plt.plot([1.5,3.5,-2,1.6])),matplotlib就会在最后一个用过的subplot(如果没有则创建一个)上进行绘制。因此,如果我们执行下列命令,你就会得到如图所示:
&&&from numpy.random import randn
&&&plt.plot(randn(50).cumsum(),'k--')
plt.show()
k–是一个线型选项,用于告诉matplotlib绘制黑色虚线图。上面那些由fig.add_subplot所返回的对象,直接调用他们的实例方法就可以在其他空着的格子里面画图了,如图:
&&&ax1.hist(randn(100),bins=20,color='k',alpha=0.3)
&&&ax2.scatter(np.arange(30),np.arange(30)+3*randn(30))
&&&plt.show()
由于根据特定布局创建figure和subplot是一件非常常见的任务,于是便出现了一个更为方便的方法(plt.subplots),它可以创建一个新的Figure,并返回一个含有已创建的subplot对象的numpy数组:
&&&fig,axes = plt.subplots(2,3)
array([[&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b593c0a90&,
&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b&,
&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b592b1f50&],
[&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b&,
&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b591a39d0&,
&matplotlib.axes._subplots.AxesSubplot object at 0x7f2b59127ad0&]], dtype=object)
这是非常实用的,因为可以轻松的对axes数组进行索引,就好像是一个二维数组一样,例如,axes[0,1].hist(randn(100),bins=20,color='red',alpha=0.3)
&&&axes[0,1].hist(randn(100),bins=20,color='red',alpha=0.3)
&&&plt.show()
调整subplot周围的间距
默认情况下,matplotlib会在subplot外围留下一点的边距,并在subplot之间留下一定的边距。间距跟图像的高度和宽度有关,因此,如果你调整了图像的大小(不管是编程还是手工),间距也会自动调整。利用figure的subplots_adjust方法可以轻而易举的修改间距,此外,他还是个顶级函数,wspace和hspace用于控制宽度和高度的百分比,可以用作subplot之间的间距,下面是一个简单的例子,其中将间距收缩到了0:
&&&fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
&&&for i in range(2):
for j in range(2):
axes[i,j].hist(randn(500),bins=50,color='k',alpha=0.5)
&&& plt.subplots_adjust(wspace=0,hspace=0)
&&& plt.show()
不难看出,其中的轴标签重叠了。matplotlib不会检查标签是否重叠,所以对于这种情况,只能自己手动设定,在后面会详细讲到。
颜色、标记和线型
matplotlib的plot函数接受一组X和Y坐标,还可以接受一个表示颜色和线型的字符串缩写。例如,要根据x,y坐标绘制绿色虚线,可以这样:ax.plot(x,y,'g--'),这种在一个字符串中指定颜色和线型的方式非常方便,通过下面更明确地指定方式也可以达到相同的效果:ax.plot(x,y,linestyle='--',color='g'),常用的颜色都有一个缩写词,如红色:r,蓝色:b,要使用其他任意颜色则可以通过指定其RGB值的形式使用(例如,‘#CECECE’)。完成的linestyle列表参见plot文档。线型图还可以加上一些标记(marker),以强调实际的数据点。由于matplotlib创建的连续的线型图(点与点之间插值),因此有时可能不太容易看出真实数据点的位置。标记也可以放到格式字符串中,但标记类型和线型必须放到颜色后面。
&&& plt.plot(randn(30),linestyle='--',color='b',marker='o')
&&& plt.show()
&&& plt.plot(randn(30),linestyle='--',color='r',marker='*')
&&&plt.show()
在线型图中,非实际数据点默认是按线性方式插值的。可以通过drawstyle选项修改:
&&& data = randn(30).cumsum()
&&& plt.plot(data,'k-',drawstyle='steps-post',label='steps-post')
&&& plt.plot(data,'k--',label='Default')
&&& plt.legend(loc='best')
&&& plt.show()
对于添加图例,在plot对象中通过label参数添加即可,最后在plt.legend(loc=”)中选择添加位置就轻松完成。下面给出loc的位置参数:
‘upper right’
‘upper left’
‘lower left’
‘lower right’
‘center left’
‘center right’
‘lower center’
‘upper center’
‘center’
刻度、标签和图例
pyplot的接口设计目的就是交互式使用,含有诸如xlim,xticks和xticklabels之类的方法,他们分别控制图标的范围,刻度位置、刻度标签等。其使用方式有如下两种:
1、调用时不带参数,则返回当前的参数值。例如,plt.xlim()返回当前的X轴绘图范围。
2、调用时带参数,则设置参数值。因此,plt.xlim([0,10])会将X轴的范围设置为0到10
设置标题、轴标签、刻度以及刻度标签
为了说明轴的自定义,将创建一个简单的图像并绘制一段随机数:
&&& fig = plt.figure()
&&& ax = fig.add_subplot(1,1,1)
&&& ax.plot(randn(1000).cumsum())
&&& plt.show()
绘制后的图像如图所示:
如果要修改X轴的刻度,最简单的办法是使用set_xticks和set_xticklabels。前者告诉matplotlib要将刻度放在数据范围中的哪些位置,默认情况下,这些位置也就是刻度标签。但我们可以通过set_xticklabels将任何其他的值用作标签:
&&& ticks = ax.set_xticks([0,250,500,750,1000])
&&& labels = ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')
最后,再用set_xlabel为X轴设置一个名称,并用set_title设置一个标题:
&&& ax.set_title('My first matplotlib plot')
&&& ax.set_xlabel('Stages')
&&& plt.show()
对于Y轴同样的,只需把set_xticks、set_xticklabels等换成set_yticks、set_yticklabels即可,是不是非常方便?最后绘制的图为下:
值得我们思考的是:matplotlib默认字体不是中文而是英文,如果想要将标题设置成中文该如何做呢?我们这里分成两个平台来解决:
linux平台(笔者的linux环境是Ubuntu14.4的)
1、首先要知道linux系统下的中文字体包在哪里,所以我们要在linux终端中输入该语句:
fc-list :lang=zh-cn #注意:前有个空格
给各位截个图:
图中列出了所有包含中文字体的目录或文件,而我们需要的是后缀是.ttf的路径,好的,记住它。
2、找到了中文字体的所在目录,接下来就好办了,只需在程序中写入如下语句即可:
&&&from matplotlib.font_manager import FontProperties
&&&font = FontProperties(fname = "/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf", size=14)
3、另外要注意的就是,假如要使用中文,只需在中文前加个字符u即可,如:plt.title(u'这里写的是中文')
windows平台
windows平台下的操作相对来说简单点,只需在程序中写入如下语句即可:
&&&from pylab import mpl
&&&mpl.rcParams['font.sans-serif'] = ['FangSong']
&&&mpl.rcParams['axes.unicode_minus'] = False
同样,在使用中文时要加上字符u。如:plt.title(u'这里写的是中文')
下面我们实践一下,将图中的英文都换成中文:
&&& fig = plt.figure()
&&& ax = fig.add_subplot(1,1,1)
&&& ax.plot(randn(1000).cumsum())
&&& from matplotlib.font_manager import FontProperties
&&& font = FontProperties(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf',size=14)
&&& ticks = ax.set_xticks([0,250,500,750,1000])
&&& labels = ax.set_xticklabels([u'一',u'二',u'三',u'四',u'五'],rotation=30,fontsize='small',fontproperties=font)
&&& ax.set_title(u'我的第一个绘图',fontproperties=font)
&&& ax.set_xlabel(u'阶段',fontproperties=font)
&&& plt.show()
所绘制的图如下:
图例(legend)是另一种用于标识图表元素的重要工具。最简单的添加方式是在添加subplot的时候传入label参数:
&&& fig = plt.figure()
&&& ax = fig.add_subplot(1,1,1)
&&& ax.plot(randn(1000).cumsum(),'k',label='one')
&&& ax.plot(randn(1000).cumsum(),'g--',label='two')
&&& ax.plot(randn(1000).cumsum(),'b.',label='three')
&&& ax.legend(loc='best')
&&& plt.show()
绘制出来的图如下:
注解以及在Subplot上绘图
除标准的图表对象外,可能还希望绘制一些自定义的注解(比如文本、箭头或者其他图形等)。注解可以通过text(文本)、arrow(箭头)和annotate(注解)等函数进行添加。text可以将文本绘制在图表的指定坐标(x,y)。注解中可以既含有箭头也含有文本,例如,根据2007年以来的标注普尔500指数收盘价格绘制一张曲线图,并标出2008年到2009年金融危机期间的一些重要日期,代码如下:
&&& from datetime import datetime
&&& import pandas as pd
&&& fig = plt.figure()
&&& ax = fig.add_subplot(1,1,1)
&&& data = pd.read_csv('/home/martin/work/data/ch08/spx.csv',index_col=0,parse_dates=True)
&&& spx = data['SPX']
&&& spx.plot(ax=ax,style='k-')
&&& crisis_data = [(datetime(2007,10,11),'Peak of bull market'),(datetime(2008,3,12),'Bear Stearns Fails'),(datetime(2008,9,15),'Lehman Bankruptcy')]
&&& for date,label in crisis_data:
ax.annotate(label,xy=(date,spx.asof(date)+50),xytext=(date,spx.asof(date)+200),arrowprops=dict(facecolor='black'),horizontalalignment='left',verticalalignment='top')
&&& ax.set_xlim(['1/1/2007','1/1/2011'])
&&& ax.set_ylim([600,1800])
&&& ax.set_title('Important dates in
financial crisis')
&&& plt.show()
绘制后的图形如下:
更多有关注解的示例,请访问matplotlib的在线示例库。
将图表保存到文件
利用plt.savefig可以将当前图表保存到文件,例如将图表保存为csv文件,你只需要输入:
plt.savefig('example.csv')。文件类型是通过文件扩展名推断出来的。我们在发布图片时最常用到的两个重要选项是dpi(控制每英寸点数,分辨率)和bbox_inches(可以剪除当前图表周围的空白部分)。要得到一张带有最小白边且分辨率为400DPI的png图片,你可以:
plt.savefig('example.png',dpi=400,bbox_inches=''tight)。下表给出savefig的参数:
含有文件路径的字符串或python的文件型对象
图像分辨率,默认为100
facecolor、edgecolor
图像的背景色、默认为W白色
显式设置文件格式(png,pdf,svg,csv…..)
bbox_inches
图表需要保存的部分,如果设置为tight,则尝试剪除图表周围的空白部分
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4167次
排名:千里之外
原创:14篇

我要回帖

更多关于 matplotlib读取csv 的文章

 

随机推荐