if x<y<z:print('x is greater than y')if x<=y:print('sss')if x==y:print('dddd')if x!=y
print('dsss')if x>y:print('aaaa')elif x=y:print('ddd')else:print('bbbb')deffunction():print('this is a function')
a=1+2print(a)
function()deffun(a,b):
c=a*b
print('this c is',c)
fun(1,2)
1.3 文件
defsale_car(price,color,brand,is_second_hand):print('price',price,'color',color,'brand',brand,'is_second_hand',is_second_hand)
sale_car(1000,'red','carmy',True)
APPLE=100deffun():
a=APPLE
print(a)return a+100print(APPLE)print(fun())
APPLE=100
a=Nonedeffun():global a
a=20return a+200print(APPLE)print('a past =',a)print(fun())print('a now=',a)
text="this is next lind\nthis is the last line"print(text)
my_fire=open('my fire.txt','w')#w write //r read
my_fire.write(text)
my_fire.close()
append_text="\nthis is append text"
my_fire=open('my fire.txt','a')#a 补充
my_fire.write(append_text)
my_fire.close()file=open('my fire.txt','r')
content =file.read()print(content)file=open('my fire.txt','r')
content =file.readline()#第一行内容
second_content=file.readline()#第二行内容
content_total=file.readlines()#全部读取print(content,second_content,content_total)
a_input =input('Please give a number:')#return a string
a_input =int(input('Please give a number:'))#return a stringprint('This input number is',a_input)if a_input ==1:print('this is a good one')elif a_input ==2:print('see you')else:print('good luck')
1.6 tuple list
#tuple list
a_tupel =(12,3,4,5,3)
another_tupel =1,3,44,5
a_list =[11,22,33,4,2]for content in a_list:print(content)for index inrange(len(a_list)):print('index', index,'number in list=', a_list[index])for index inrange(len(a_tupel)):print('index', index,'number in tuple=', a_tupel[index])
a =[1,2,4,4,22,1]
a.append(0)print(a)
a.insert(1,0)#在第一位添加0print(a)
a.remove(2)print(a)print(a[1])print(a[-1])#打印最后一位print(a[0:3])print(a[:3])print(a[3:5])print(a.index(4))#第一次出现的索引print(a.count(4))#出现的次数
a.sort()#从小到大排序print(a)
a.sort(reverse=True)#反向排序print(a)#多维列表
a =[1,2,3,5,6,9,6]
multi_a =[[1,2,4],[2,4,6],[4,8,9],[4,7,8]]print(a[1])print(multi_a[0][1])
import time
print(time.localtime())import time as t
print(t.localtime())from time import time,localtime
print(localtime())print(time())from time import*#import 所有功能print(localtime())print(time())import m2#调用自己的模块
m2.printdata('I am python 2')#m2.pydefprintdata(data):print('I am m2\n'+data)
1.9 while break continue
a =Truewhile a:
b =input('type something')if b =='1':
a =Falseelse:passprint('still in while')print('finish run')
a =Truewhile a:
b =input('type something')if b =='1':break#跳出else:passprint('still in while')print('finish run')
a =Truewhile a:
b =input('type something')if b =='1':continue#继续循环else:passprint('still in while')print('finish run')
1.10 错误处理 try
#错误处理 trytry:file=open('eeee.txt','r+')except Exception as e:print(e)print('there is no file as eeee')
response =input('do you want to create a new file?')if response =='y':file=open('eeee.txt','w')else:passelse:file.write('ssss')file.close()
1.11 map zip lambda
a=[1,2,3]
b=[4,5,6]#合并zip(a,b)print(zip)#合并可视化print(list(zip(a,b)))for i,j inzip(a,b):print(i/2,j*2)print(list(zip(a,a,b)))#迭代计算deffun1(x,y):return(x+y)print(fun1(2,3))
fun2 =lambda x, y :x+y#简化的功能函数print(fun2(2,3))print(list(map(fun1,[1],[2])))print(list(map(fun1,[1,3],[2,5])))#map 列表1中第一个元素跟列表2中第一个元素运算
1.12 copy
#copyimport copy
a =[1,2,3]
b =a
id(a)#在硬盘中所占的索引id(b)
b[0]=11print(a)
a[1]=2print(b)#在同一位置,其中一个改变另一个也会改变 完全copyprint(id(a)==id(b))#true
c=copy.copy(a)#浅复制,不同位置print(id(a)==id(c))#false
c[1]=222print(a)
a =[1,2,[3,4]]
d =copy.copy(a)print(id(a)==id(b))#falseprint(id(a[2])==id(d[2]))#True 第一层列表指定在不同的空间,第二层列表在同一个空间
a[0]=11print(d)#不改变
a[2][0]=333print(d)#改变
e = copy.deepcopy(a)#完全copy 任何地方都不会被重复print(id(e[2])==id(a[2]))#false
1.13 set
char_list =['a','b','c','d','d','d']print(set(char_list))#去除重复,无序print(type(set(char_list)))
sentence ='Welcome back to this Tutorial'print(set(sentence))#会区分大小写#不能传多个列表
unique_char =set(char_list)
unique_char.add('x')print(unique_char)
unique_char.add('a')print(unique_char)#重复 还是会被删掉#add不能加列表print(unique_char.remove('x'))#Noneprint(unique_char)#已经减掉了#remove减去没有的会报错,print(unique_char.discard('y'))#不会报错,返回原有数据
unique_char.clear()#清除
set1 = unique_char
set2 ={'a','u','e'}print(set1.difference(set2))#1有2没有的print(set1.intersection(set2))#相同的部分
1.14 regulate expression正则表达式
#网页爬虫import re
#matching string
pattern1 ='cat'
pattern2 ='bird'
string ='dog runs to cat'print(pattern1 in string)print(pattern2 in string)#用正则寻找配对print(re.search(pattern1,string))print(re.search(pattern2,string))#匹配多种可能 使用[]#multiple pattern ('run' or 'ran')
ptn = r"r[au]n"print(re.search(ptn,"dog rans to cat"))#匹配多种可能print(re.search(r"r[A-Z]n","dog rans to cat"))print(re.search(r"r[a-z]n","dog rans to cat"))print(re.search(r"r[0-9]n","dog rans to cat"))print(re.search(r"r[0-9a-z]n","dog rans to cat"))#数字# \d :decimal digitprint(re.search(r"r\dn","run r4n"))#\D any non-decimal digitprint(re.search(r"r\Dn","run r4n"))#空白#\s :any white space [\t\n\r\f\v]print(re.search(r"r\sn","r\nn,r4n"))#\S: opposite to \s ,any non-white spaceprint(re.search(r"r\Sn","r\nn,r4n"))#所有字母数字和"_"#\w:[a-zA-Z0-9_]#\W:opposite to \w#空白字符#\b empty string(only at the start or end of the word)print(re.search(r"\bruns\b","dog runs to cat"))#\B :empty string (but not at the start or end of a word)print(re.search(r"\B runs \B","dog runs to cat"))#特殊字符 任意字符#\\:match\print(re.search(r"runs\\","runs\ to me"))# .:match anything (excepy\n)print(re.search(r"r.n","r-ns to me"))#句尾句首# ^ : match line beginningprint(re.search(r"^dog","dog runs to cat"))# $ : match line endingprint(re.search(r"cat$","dog runs to cat"))#是否# ? : may or may not occurprint(re.search(r"Mon(day)?","Monday"))print(re.search(r"Mon(day)?","Mon"))#多行匹配#multi-line
string ="""
dog runs to cat
I run to dog
"""print(re.search(r"^I",string))print(re.search(r"I", string, flags=re.M))# M:multi-line#0或多次# * :occur 0 or more timesprint(re.search(r"an*","a"))print(re.search(r"ab","abbbbb"))#1或多次# +: occur 1 or more timesprint(re.search(r"ab+","a"))print(re.search(r"ab+","abbbbb"))#可选次数#{n,m} : occur n to m timesprint(re.search(r"ab{2,10}","a"))#b出现2-10次print(re.search(r"ab{2,10}","abbbbb"))#group组!报错#match = re.search(r"(\d+),Date:(.+)","ID:021523,Data:Feb/12/2017")#print(match)#print(match.group())#print(match.group(1))#print(match.group(2))#match = re.search(r"(?P<id>\d+),Date:(?P<Data>.+)","ID:021523,Data:Feb/12/2017")#print(match)#print(match.group('id'))#print(match.group('Data'))#寻找所有匹配#findallprint(re.findall(r"r[ua]n","run ran ren"))#| orprint(re.findall(r"run|ran","run ran ren"))print(re.findall(r"r(u|a)n","run ran ren"))#替换# re.sub()print(re.sub(r"r[au]ns","catches","dog runs to cat"))#分裂#re.split()print(re.split(r"[,;\.]","a;b.c,d;e"))#compile
compiled_re = re.compile(r"r[ua]n")print(compiled_re.search("dog ran to cat"))
1.15 numpy
import numpy as np
#numpy属性
array = np.array([[1,2,3],[2,3,4]])#把列表转换成矩阵print(array)print('number of dim',array.ndim)#几维数组print('shape',array.shape)#行数列数print('size',array.size)#总共有多少元素#创建array
a = np.array([2,33,4],dtype=np.int32)#默认int32print(a.dtype)
a = np.array([2,33,4],dtype=np.float32)#默认float64print(a.dtype)
a = np.array([[2,34,4],[2,44,5]])print(a)
a = np.zeros((3,4))print(a)
a = np.ones((3,4),dtype=np.int16)print(a)
a = np.empty((3,4))print(a)
a= np.arange(10,20,2)print(a)
a = np.arange(12).reshape((3,4))print(a)
a = np.linspace(1,10,5)#1-10 5段 生成线段print(a)
a = np.linspace(1,10,6).reshape((2,3))print(a)#numpy基础运算
a = np.array([10,20,30,40])
b = np.arange(4)print(a,b)
c = a-b
print(c)
c =a+b
print(c)
c = b**2print(c)
c =10*np.sin(a)print(c)print(b)print(b<3)print(b==3)#矩阵的运算
a = np.array([[1,2],[2,3]])
b = np.arange(4).reshape((2,2))print(a)print(b)
c = a*b#逐个相乘print(c)
c = np.dot(a,b)#矩阵的乘法print(c)
c = a.dot(b)#矩阵的乘法print(c)
a = np.random.random((2,4))#2行4列随机矩阵print(a)print(np.sum(a))print(np.min(a))print(np.max(a))print(np.sum(a,axis=1))#axis=1 在列中,axis =0 在行中print(np.min(a,axis=0))print(np.max(a,axis=1))
A = np.arange(14,2,-1).reshape((3,4))print(A)print(np.argmin(A))#最小值索引print(np.argmax(A))print(np.mean(A))#平均值print(np.average(A))print(np.median(A))#中位数print(np.cumsum(A))#累加print(np.diff(A))#累差print(np.nonzero(A))#非零print(np.sort(A))#逐行排序print(np.transpose(A))#矩阵的转置print((A.T).dot(A))print(np.clip(A,5,9))#小于5的变成5 大于9的变成9 其余不变#numpy索引
A = np.arange(3,15)print(A)print(A[3])
A = np.arange(3,15).reshape((3,4))print(A)print(A[2])#索引第二行print(A[1][1])print(A[2][1])print(A[2,1])print(A[2:])print(A[1,1:3])#迭代每一行for row in A:print(row)#迭代每一列for column in A.T:print(column)#迭代每一个print(A.flatten())for item in A.flat:#迭代器print(item)#numpy array合并
A = np.array([1,1,1])
B = np.array([2,2,2])print(np.vstack((A,B)))#vertical stack上下合并
C = np.vstack((A,B))print(A.shape,C.shape)
D = np.hstack((A,B))#左右合并print(D)print(D.shape)#把横向序列变成纵向print(A[:,np.newaxis])#在列上面加了一个维度
A = A[:,np.newaxis]
B = B[:,np.newaxis]print(np.hstack((A,B)))
C = np.concatenate((A,B,B,A),axis=0)#多个array纵向或横向合并,axis = 0 在上下合并 axis = 1 在左右合并print(C)
C = np.concatenate((A,B,B,A),axis=1)print(C)#分割
A = np.arange(12).reshape((3,4))print(A)print(np.split(A,2,axis =1))#横向分割,分成2块,axis= 1 对列操作print(np.split(A,3,axis=0))#不能进行不等的分割print(np.array_split(A,3,axis=1))#不等分割print(np.vsplit(A,3))#纵向分割print(np.hsplit(A,2))#横向分割#赋值 copy& deep copy
a = np.arange(4)print(a)
b = a
c = a
d = b
a[0]=11print(a)print(b)#改变a 就改变bprint(b is a)print(c)#c也变了print(d)#也变了#改变任意一个,其他的都会变
b = a.copy()#deep copy a的值赋给b,但是没有关联上aprint(a)print(b)
a[0]=333print(a)print(b)#没变
1.16 pandas
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series([1,3,4,np.nan,44,1])#nan什么也没有print(s)
dates = pd.date_range('20201118',periods=6)print(dates)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])print(df)
df1 = pd.DataFrame(np.arange(12).reshape((3,4)))print(df1)
df2 = pd.DataFrame({'A':1.,'B':pd.Timestamp('20130102'),'C':pd.Series(1,index=list(range(4)),dtype='float32'),'D':np.array([3]*4,dtype='int32'),'E':pd.Categorical(["test","train","test","train"]),'F':'foo'})print(df2)print(df2.dtypes)print(df2.index)#行print(df2.columns)#列print(df2.values)print(df2.describe())print(df2.T)print(df2.sort_index(axis=1,ascending=False))#对列排序,倒着排序print(df2.sort_index(axis=0,ascending=False))print(df2.sort_values(by='E'))#对值排序#选择数据
dates = pd.date_range('20201118',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])print(df)print(df['A'], df.A)print("\n")print(df[0:3],df['20201118':'20201120'])#select a label:locprint(df.loc['20201118'])print(df.loc[:,['A','B']])print(df.loc['20201118',['A','B']])#select by position:ilocprint(df.iloc[3])#第三行print(df.iloc[3,1])print(df.iloc[3:5,1:3])print(df.iloc[[1,3,5],1:3])#mixed selection :ix#print(df.ix[:3,['A','C']])#使用不了了#Boolean indexing 筛选print(df)print(df[df.A>8])#pandas设置值
dates = pd.date_range('20201118',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
df.iloc[2,2]=1111print(df)
df.loc['20201120','B']=222print(df)
df[df.A>10]=1
df.B[df.A>9]=0print(df)#加一个空的列
df['F']=np.nan
print(df)#加一列
df['E']=pd.Series([1,2,3,4,5,6],index=pd.date_range('20201118',periods=6))print(df)#处理丢失数据
dates = pd.date_range('20201118',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
df.iloc[0,1]=np.nan
df.iloc[1,2]=np.nan
print(df)print(df.dropna(axis=0,how='any'))#how={'any','all'}#any如果这里有一个nan,这一行都丢掉 all 只有全部都是nan,才丢掉print(df.dropna(axis=1,how='any'))print(df.fillna(value=0))#填上数据print(df.isnull())#是否缺失数据?print(np.any(df.isnull())==True)#是否至少有一个丢失的数据#导入导出数据
data = pd.read_csv('Student.csv')print(data)#存储
data.to_pickle('student_pickle')#合并#concatenating
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])print(df1)print(df2)print(df3)
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)#竖向合并,忽略索引print(res)#join,['inner','outer']
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])print(df1)print(df2)
res = pd.concat([df1,df2],join='outer')#默认outer没有的用NAN填充print(res)
res = pd.concat([df1,df2],join='inner',ignore_index=True)#只找相同的,没有的裁剪掉print(res)#已删除#res = pd.concat([df1,df2],axis=1,join_axes = [df1.index])#左右合并,只考虑df1的index#print(res)#append
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])print('\n')
res = df1.append(df2,ignore_index=True)print(res)
res = df1.append([df2,df3])print(res)
s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])print(s1)
res = df1.append(s1,ignore_index=True)print(res)#merging two df by key/keys(may be used in database)#simple example
left = pd.DataFrame({'key':['K0','K1','K2','K3'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key':['K0','K1','K2','K3'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']})print(left)print(right)
res = pd.merge(left,right,on='key')#在key列中合并print(res)#consider two keys
left = pd.DataFrame({'key1':['K0','K0','K1','K2'],'key2':['K0','K1','K0','K1'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key1':['K0','K1','K2','K3'],'key2':['K0','K0','K0','K0'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']})print(left)print(right)
res = pd.merge(left,right,on =['key1','key2'])#相同的合并 默认how = 'inner'print(res)#how = ['left','right','outer','inner']
res = pd.merge(left,right,on =['key1','key2'],how ='outer')#没有的用nanprint(res)
res = pd.merge(left,right,on =['key1','key2'],how ='right')#基于right的key来填充print(res)#indicator
df1 = pd.DataFrame({'coll':[0,1],'col_left':['a','b']})
df2 = pd.DataFrame({'coll':[1,2,2],'col_right':[2,2,2]})print(df1)print(df2)
res = pd.merge(df1,df2,on='coll',how='outer',indicator=True)#indicator = True 显示每一行是采用的什么形式print(res)
res = pd.merge(df1,df2,on='coll',how='outer',indicator='indicate_column')#改名字print(res)
left = pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2']},
index =['K0','K1','K2'])
right = pd.DataFrame({'C':['C0','C1','C2'],'D':['D0','D1','D2']},
index =['K0','K1','K2'])print(left)print(right)#left_index right_index
res = pd.merge(left,right,left_index=True,right_index=True,how='outer')print(res)
boys = pd.DataFrame({'k':['K0','K1','K2'],'age':[1,2,3]})
girls = pd.DataFrame({'k':['K0','K0','K3'],'age':[4,5,6]})print(boys)print(girls)
res = pd.merge(boys,girls,on='k',suffixes=['_boy','_gril'],how='inner')#名字不重复,只考虑相同的keyprint(res)#matplotlib
1.17 matplotlib(1)
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3,3,50)
y1 =2*x +1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.figure(num=3,figsize=(8,5))#figure3
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth =10.0,linestyle='--')
plt.show()
1.18 matplotlib(2)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3,3,50)
y1 =2*x +1
y2 = x**2
plt.figure(num=3,figsize=(8,5))#figure3
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth =10.0,linestyle='--')
plt.xlim((-1,2))
plt.ylim((-2,3))#取值范围
plt.xlabel('I am x')
plt.ylabel('I am y')
new_ticks = np.linspace(-1,2,10)#-1到2分成5份print(new_ticks)
plt.xticks(new_ticks)#把x轴换掉
plt.yticks([-2,-1.8,-1,1.22,3,],[r'$really\ bad$',r'$bad\ \alpha$',r'$normal$',r'$good$',r'$really\ good$'])#变字体,r正则表达式,使用LaTeX语言#改变坐标轴的位置#gca = ' get current axis'
ax = plt.gca()print(ax)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')#上边后边的脊梁都消失
ax.xaxis.set_ticks_position('bottom')#x轴由下面的脊梁代替
ax.yaxis.set_ticks_position('left')#y轴由右边的脊梁代替
ax.spines['bottom'].set_position(('data',0))#spines选择set_position设置位置为y轴值为-1的位置
ax.spines['left'].set_position(('data',0))#outwardd,axes定位为y的百分之多少#图例
l1,=plt.plot(x,y2,label='up')
l2,=plt.plot(x,y1,color='red',linewidth =10.0,linestyle='--',label='down')
plt.legend()#默认图例
plt.legend(handles=[l1,l2,],labels=['aaa','bbb'],loc='best')#loc:location#Annotation标注
x0 =0.5
y0 =2*x0 +1
plt.scatter(x0,y0,s=50,color='b')#scatter打印一个点,s:size
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)#画一条线,k--黑色虚线,lw线宽#method1############
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
fontsize =16,arrowprops =dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))#%s指针,xy参考点,xytext位置相对于x0,y0点的移动,fonsize字体大小.arrowprops箭头参数,arrowstyle图形为箭头#method2##################
plt.text(-1,2,r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$',
fontdict={'size':16,'color':'r'})#tick能见度,防止坐标轴被遮盖for label in ax.get_xticklabels()+ ax.get_yticklabels():#把坐标轴提取出来
label.set_fontsize(12)#扩大字体
label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))#set_bbox字体后面的框,facecolor背景色,edgecolor边框无颜色,alpha透明度#不懂 事实是还是遮盖了????
plt.show()#scatter散点图
plt.figure()
n =1024
X = np.random.normal(0,1,n)#随机生成正态分布,mean=0,var = 1,生成n个数
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)#for color value
plt.scatter(X,Y,s=75,c=T,alpha=0.5)#scatter画散点图,s:size,c=color,默认cmap对应的颜色图
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
plt.xticks(())#隐藏ticks
plt.yticks(())
plt.show()#散点图的一般用法
plt.figure()
plt.xlim((-1,5))
plt.ylim((-1,5))
plt.scatter(np.arange(5),np.arange(5))
plt.xticks(())#隐藏ticks
plt.yticks(())
plt.show()#柱状图
plt.figure()
n =12
X = np.arange(n)
Y1 =(1-X/float(n))*np.random.uniform(0.5,1.0,n)
Y2 =(1-X/float(n))*np.random.uniform(0.5,1.0,n)print(Y1)
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')#bar柱状图
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')for x,y inzip(X,Y1):#x,y分别传入#ha:horizontal alignment横向对齐方式#va:纵向对齐方式
plt.text(x,y+0.05,'%.2f'%y,ha='center',va='bottom')#第一个第二个为位置for x, y inzip(X, Y2):# x,y分别传入# ha:horizontal alignment横向对齐方式# va:纵向对齐方式
plt.text(x,-y -0.05,'-%.2f'% y, ha='center', va='top')# 第一个第二个为位置
plt.xlim(-5,n)
plt.xticks(())
plt.ylim(-1.25,1.25)
plt.yticks(())
plt.show()#等高线图deff(x,y):#the height functionreturn(1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
plt.figure()
n =256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)#绑定为网格输入值,匹配#use plt.contourf to filling contours#X,Y and value for (X,Y)point
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)#contourf画颜色,8代表分成8+2块,cmap有hot,cool#use plt.contour to add contour lines
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)#adding label
plt.clabel(C,inline=True,fontsize=10)#inline画在线里面
plt.xticks(())
plt.yticks(())
plt.show()#打印图像
plt.figure()
a = np.array([0.313660827978,0.365348418405,0.423733120134,0.365348418405,0.439599930621,0.525083754405,0.423733120134,0.525083754405,0.651536351379]).reshape(3,3)#for the value of "interpolation", check this:#http://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.html#for the value of "origin"= ['upper', 'lower'], check this:#http://matplotlib.org/examples/pylab_examples/image_origin.html
plt.imshow(a,interpolation='nearest',cmap='bone',origin='upper')
plt.colorbar(shrink=0.9)#压缩到90%
plt.xticks(())
plt.yticks(())
plt.show()#3D图像from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)#X,Y value
X=np.arange(-4,4,0.25)
Y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(X,Y)
R=np.sqrt(X**2+Y**2)#计算Z#height value
Z=np.sin(R)
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))#plt_surface画3D图,rstride行跨,cstride列跨
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')#zdir='z'从z轴压下去,offset从0点压到坐标轴哪个点
ax.set_zlim(-2,2)
plt.show()#subplot多个显示
plt.figure()
plt.subplot(2,2,1)#创建小图,分成2行2列,的第一个位置
plt.plot([0,1],[0,1])
plt.subplot(2,2,2)#创建小图,分成2行2列,的第二个位置
plt.plot([0,1],[0,2])
plt.subplot(2,2,3)#创建小图,分成2行2列,的第三个位置
plt.plot([0,1],[0,3])
plt.subplot(2,2,4)#创建小图,分成2行2列,的第四个位置
plt.plot([0,1],[0,4])
plt.show()
plt.figure()#第一行一张图,第二行三张图
plt.subplot(2,1,1)
plt.plot([0,1],[0,1])
plt.subplot(2,3,4)
plt.plot([0,1],[0,2])
plt.subplot(2,3,5)
plt.plot([0,1],[0,3])
plt.subplot(2,3,6)
plt.plot([0,1],[0,4])
plt.show()#第二章subplot方法,subplot in grid#method1:subplot2grid###########################
plt.figure()
ax1=plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)#分成网格,(3,3)分成3行3列,(0,0)从(0,0)开始,列占3列,占一行
ax1.plot([1,2],[1,2])
ax1.set_title('ax1_title')#都要加个set
ax2=plt.subplot2grid((3,3),(1,0),colspan=2)#分成网格,(3,3)分成3行3列,不写都默认为1
ax3=plt.subplot2grid((3,3),(2,0))#分成网格,(3,3)分成3行3列
ax4=plt.subplot2grid((3,3),(2,1))#分成网格,(3,3)分成3行3列
ax5=plt.subplot2grid((3,3),(1,2),rowspan=2)#分成网格,(3,3)分成3行3列
plt.show()#method2:gridspec#####################import matplotlib.gridspec as gridspec
plt.figure()
gs=gridspec.GridSpec(3,3)#3行3列
ax1=plt.subplot(gs[0,:])#索引的方式
ax2=plt.subplot(gs[1,:2])
ax3=plt.subplot(gs[2,0])
ax4=plt.subplot(gs[2,1])
ax5=plt.subplot(gs[1:,2])
plt.show()#method3:easy to define structure######################################3
f,((ax11,ax12),(ax21,ax22))=plt.subplots(2,2,sharex=True,sharey=True)#f定义图片,注意要采用subplots,sharex共用x轴,sharey共用y轴
ax11.scatter([1,2],[1,2])
plt.tight_layout()
plt.show()#图中图
fig=plt.figure()
x=[1,2,3,4,5,6,7]
y=[1,3,4,2,5,8,6]
left,bottom,width,height=0.1,0.1,0.8,0.8
ax1=fig.add_axes([left,bottom,width,height])#add_axes加入坐标轴,这里表示的都是百分比,前两个是坐标的位置
ax1.plot(x,y,'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')
left,bottom,width,height=0.2,0.6,0.25,0.25
ax2=fig.add_axes([left,bottom,width,height])#add_axes加入坐标轴,这里表示的都是百分比,前两个是坐标的位置
ax2.plot(y,x,'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside1')
plt.axes([0.6,0.2,0.25,0.25])
plt.plot(y[::-1],x,'g')#[::-1]y的值逆序一下
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside2')#不用写ax2.set_label因为是跟着默认的plt.axes
plt.show()#secondary axis主次坐标轴
x=np.arange(0,10,0.1)
y1=0.05*x**2
y2=-1*y1
fig,ax1 = plt.subplots()
ax2=ax1.twinx()#twinx镜面反过来
ax1.plot(x,y1,'g-')
ax2.plot(x,y2,'b--')
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1',color='g')
ax2.set_ylabel('Y2',color='b')
plt.show()#animation动画from matplotlib import animation
fig,ax=plt.subplots()
x=np.arange(0,2*np.pi,0.01)
line,=ax.plot(x,np.sin(x))#line,选择它的第一位defanimate(i):
line.set_ydata(np.sin(x+i/10))#从1-100,到100的时候更新一下return line,definit():
line.set_ydata(np.sin(x))return line,
ani = animation.FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=20,blit=True)#frames插入100帧,100个时间点,init_func最开始的,interval频率,隔多久更新一次,blit=True只更新变化的
plt.show()