matplotlib 庫( http://www.matp1otlìb.org )的基本可視化功能。數組
主要是2-D繪圖、金融繪圖和3-D繪圖dom
#導入所須要的包
import matplotlib as mpl import numpy as np import matplotlib.pyplot as plt
np.random.seed(1000)
y=np.random.standard_normal(20) #生成20個正太分佈隨機數
x=range(len(y)) #簡單的繪圖
plt.plot(x,y)
其實,不須要輸入x參數也能夠繪圖,由於plot 會注意到什麼時候傳遞了ndarray 對象。在這種狀況下,沒有必要提供x 值的"額外"信息, 若是你只提供y 的, plot 以索') I 值做爲對應的x 值、所以,下面一行代碼會生成徹底同樣的輸出。ide
plt.plot(y)
還能夠傳遞附加方法:函數
plt.plot(y.cumsum()) #對y的累計求和
還能夠操做細節,spa
plt.plot(y.cumsum()) plt.grid(True) #添加表格 plt.axis('tight') #顯示x軸的全刻度 plt.xlim(-1,20) #規定x軸最大、最小值 plt.ylim(np.min(y.cumsum())-1,np.max(y.cumsum())+1)
plt.show()
plt.axis具體參數:3d
Empty :返回 當前座標軸限值
off :關閉作標軸線相標籤
equal :使用等刻度
scalcd :經過尺寸變化平衡刻度
tight :使全部 數據可見{縮小限值)
Image: 使全部數據可見(使用數據限值)
[xmin、xmax, ymin, ymax] :將設置限定爲給定(一組)值code
plt.figure(figsize=(12,8)) plt.plot(y.cumsum(),'b',lw=1.5) plt.plot(y.cumsum(),'ro') plt.grid(True) plt.axis('tight') plt.xlabel('index') plt.ylabel('value') plt.title('A simple picture') plt.show()
能夠經過調用matplotlib.pyplot.colors()
獲得matplotlib支持的全部顏色。orm
別名 | 顏色 | 別名 | 顏色 | |
---|---|---|---|---|
b | 藍色 | g | 綠色 | |
r | 紅色 | y | 黃色 | |
c | 青色 | k | 黑色 | |
m | 洋紅色 | w | 白色 |
標記maker | 描述 | 標記 | 描述 | |
---|---|---|---|---|
‘o’ | 圓圈 | ‘.’ | 點 | |
‘D’ | 菱形 | ‘s’ | 正方形 | |
‘h’ | 六邊形1 | ‘*’ | 星號 | |
‘H’ | 六邊形2 | ‘d’ | 小菱形 | |
‘_’ | 水平線 | ‘v’ | 一角朝下的三角形 | |
‘8’ | 八邊形 | ‘<’ | 一角朝左的三角形 | |
‘p’ | 五邊形 | ‘>’ | 一角朝右的三角形 | |
‘,’ | 像素 | ‘^’ | 一角朝上的三角形 | |
‘+’ | 加號 | ‘\’ | 豎線 | |
‘None’,’’,’ ‘ | 無 | ‘x’ | X |
風格linestyle或ls | 描述 | 線條風格linestyle或ls | 描述 | |
---|---|---|---|---|
‘-‘ | 實線 | ‘:’ | 虛線 | |
‘–’ | 破折線 | ‘None’,’ ‘,’’ | 什麼都不畫 | |
‘-.’ | 點劃線 |
np.random.seed(2000) y=np.random.standard_normal((20,2)).cumsum(axis=0) #axis=0 按列累加求和 plt.figure(figsize=(8,6)) plt.plot(y,lw=1.5) plt.plot(y,'ro') plt.grid(True) plt.axis('tight') plt.xlabel('index') plt.ylabel('value') plt.title('A simple plot') plt.show()
plt.figure(figsize=(8,6)) plt.plot(y[:,0],lw=1.5,label='1st') plt.plot(y[:,1],lw=1.5,label='2st') plt.plot(y,'ro') plt.grid(True) plt.axis('tight') plt.xlabel('index') plt.ylabel('value') plt.legend(loc=0) plt.title('A simple plot') plt.show()
0: ‘best'
1: ‘upper right'
2: ‘upper left'
3: ‘lower left'
|
4: ‘lower right'
5: ‘right'
6: ‘center left'
|
7: ‘center right'
8: ‘lower center'
9: ‘upper center'
10: ‘center'
|
y[:,0]=y[:,0]*100
fig,ax1=plt.subplots(figsize=(8,6))
plt.plot(y[:,0],'c',lw=1.5,label='1st')
plt.plot(y[:,0],'ro')
plt.legend(loc=8)對象
ax2=ax1.twinx() #添加另外一個座標軸
plt.plot(y[:,1],lw=1.5,label='2st')
plt.plot(y[:,1],'ro')blog
plt.grid(True)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.legend(loc=0)
plt.title('A simple plot')
plt.show()
plt.figure(figsize=(8,6)) plt.subplot(211) #2x1 第一個子圖 plt.plot(y[:,0],'c',lw=1.5,label='1st') plt.plot(y[:,0],'ro') plt.legend(loc=0) plt.subplot(212) #兩行一列 第二個子圖 plt.plot(y[:,1],'g',lw=1.5,label='2st') plt.plot(y[:,1],'ro') plt.legend(loc=0) plt.grid(True) plt.axis('tight') plt.xlabel('index') plt.ylabel('value') plt.title('A simple plot') plt.show()
plt.figure(figsize=(8,6))
plt.subplot(211)
plt.plot(y[:,0],'c',lw=1.5,label='1st')
plt.plot(y[:,0],'ro')
plt.legend(loc=0)
plt.grid(True)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('1 dataset')
plt.subplot(212)
plt.bar(np.arange(len(y)),y[:,1],color='g',width=0.5,label='2st') #條形圖
plt.legend(loc=0)
plt.grid(True)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('2nd dataset')
plt.show()
np.random.seed(2000) y=np.random.standard_normal((2000,2)) plt.figure(figsize=(8,6)) plt.scatter(y[:,0],y[:,1]) plt.grid(True) plt.xlabel('1 data') plt.ylabel('2 data') plt.show()
plt.figure(figsize=(8,6)) plt.plot(y[:,0],y[:,1],color='r',marker='o') plt.grid(True) plt.xlabel('1 data') plt.ylabel('2 data') plt.show()
scatter 繪圖函數能夠加入第三維,經過不一樣的顏色進行可視化.並使用彩條加以描述。爲此,咱們用隨機數據生成第三個數據集,此次使用的是0 和10 之間的整數:
展現的散點圖有不一樣顏色小點表示的第三維,還有做爲顏色圖例的影條:
c = np.random.randint(0, 10, len(y)) plt.figure(figsize=(7,5)) plt.scatter(y[: , 0], y [ : , 1] , c=c , marker ='o') plt.colorbar() plt.grid(True) plt.xlabel('lst') plt.ylabel('2nd') plt.title('Scatter Plot')
plt.figure(figsize=(7,4)) plt.hist(y,label=['1st','2en'],bins=20) #bins=20 表明分爲20組 plt.legend(loc=0) plt.grid(True) plt.xlabel('index') plt.ylabel('value') plt.show()
matplotlib.pyplot.hist( x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype=u'bar', align=u'mid', orientation=u'vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, **kwargs)
參數描述:
x :列表對象 ndarray 對象
bins: 數據組( bin )數
range: 數據組的下界和上界
nonned :規範化爲整數1
weights: x 軸上每一個值的權重
cumulative: 每一個數據組包含較低組別的計數
hisstype :選項(字符串): ar, barstacked, step、stepfìlled
align: 選項(字符串): left, mid, righl
onentatlon: 選項(字符串): horizontal, vertical
rwideth:條塊的相對寬度
log :對數刻度
color :每一個數據集的顏色(相似數組)
label :標籤所用的字符串或者字符串序列
stacked :堆疊多個數據集
plt.figure(figsize=(7,4)) plt.hist(y,label=['1st','2en'],bins=20) plt.legend(loc=0) plt.grid(True) plt.xlabel('index') plt.ylabel('value') plt.show()
fig,ax=plt.subplots(figsize=(7,4)) plt.boxplot(y) plt.setp(ax,xticklabels=['1st','2nd']) # 設置(一組)圖表的實例的屬性 plt.grid(True) plt.xlabel('value') plt.ylabel('fre') plt.show()
data=np.random.standard_normal(20) lin=plt.plot(data,'r') plt.setp(lin,linestyle='-') plt.show()
將線的樣式更改成"短劃線"
#1:積分函數 def fun(x): return 0.5*np.exp(x)+1 #2:定義積分區 a,b=0.5,1.5 x=np.linspace(0,2) y=fun(x) #3:繪製函數圖像 fig,ax=plt.subplots(figsize=(7,4)) plt.plot(x,y,'r',lw=1.5) plt.ylim(ymin=0) from matplotlib.patches import Polygon #4:使用Polygon 函數生成陰影部分(‘補丁’),表示積分面積: Ix=np.linspace(a,b) Iy=fun(x) verts=[(a,0)]+ list(zip(Ix,Iy)) +[(b,0)] #zip把列表轉化爲元組l1= [1,2,3] l2=[2,3,4] lsit(zip(l1,l2))=[(1,2),(2,3),(3,4)] poly = Polygon(verts, facecolor ='0.9',edgecolor='0.1') ax.add_patch(poly) plt.text(0.5 * (a + b) , 1, r"$\int_a^b f(x)\mathrm{d}x$" ,horizontalalignment='center' , fontsize=20) plt.figtext(0.9, 0.075, '$X$') plt.figtext(0.075, 0.9, '$f(x)$') ax.set_xticks((a, b)) ax.set_xticklabels(('$a$' , '$b$' )) ax.set_yticks( [ fun(a) , fun(b)]) ax . set_yticklabels(('$f(a)$' , '$f(b)$')) plt.grid(True) plt.show()
strike = np.linspace(50, 150, 24) ttm = np.linspace(0.5, 2.5, 24) strike, ttm = np.meshgrid(strike, ttm) iv = (strike - 100) ** 2 / (100 *strike) / ttm # generate fake implied νolatilities from mpl_toolkits.mplot3d import Axes3D fig = plt.figure(figsize=(9, 6)) ax = fig.gca(projection='3d') surf = ax.plot_surface(strike, ttm, iv, rstride=2 , cstride=2, cmap=plt.cm.coolwarm, linewidth=0.5, antialiased=True) ax.set_xlabel('strike') ax.set_ylabel('time-to-maturity') ax.set_zlabel('implied volatility') fig.colorbar(surf, shrink=0.5, aspect=5) plt.show()
X, Y, Z :2D 數組形式的數據值
rstride :數組行距(步長大小)
cstride: 數組列距(步長大小)
color: 曲面塊顏包
cmap: 曲面峽顏色映射
facecolors :單獨曲面塊表面'顏包
norm :將值映射爲顏色的Normalize 實例
Vmin:映射的最小值
vmax :映射的最大值
還有能夠用view_init 設置不一樣的視角:
fig = plt.figure(figsize=(8, 5)) ax = fig.add_subplot(111,projection='3d') ax.view_init(30, 60) ax.scatter(strike, ttm, iv, zdir='z' , s=25, c='b' , marker='^') ax.set_xlabel('strike') ax.set_ylabel('time-to-maturity') ax.set_zlabel('implied volatili ty') plt.show()