1. 程式人生 > >matplotlib 繪相簿的簡單用法

matplotlib 繪相簿的簡單用法

首先在ipyhon啟動的時候一定要加上–pylab,否則,無法進行繪圖操作,而在spyder環境下,開啟一個ipython 的console貌似預設是不會加上這個選項的,所以用spyder環境,無法正常繪圖。現在直接在cmd下輸入ipython –pylab開始研究用matplotlib進行繪圖的方法。注意,顯示出來的影象,需要手動拖住邊框縮放一下才能重新整理。
1

 import numpy as np
  import matplotlib.pyplot as plt  
  fig = plt.figure()

上面的程式碼是產生一個空的視窗。 plt.figure有一些選項,特別是figsize,它用於確保黨圖片儲存到磁碟時具有一定的大小和橫縱比,matplotlib中的Figure還支援一種MATLAB式的編碼架構如plt.figure(2)。通過plt.gcf()即可得到當前FIgure的引用。不能通過空Figure繪圖,必須用add_subplot建立一個或多個subplot才行.

   ax1 = fig.add_subplot(2,2,1) 
   ax2 = fig.add_subplot(2,2,2)
   ax3 = fig.add_subplot(2,2,3)

這個時候發出一條繪圖的命令,那麼matplotlib’就會在最後一個用過的subplot上進行繪製(如果沒有子視窗,那麼建立一個)

plt.plot( randn(50),cumsum(),'k--' );

這裡寫圖片描述
“k–”是一個線型選項,對應黑色虛線圖,上面那些由fig.add_subplot返回的物件是AxeSubplot物件,直接呼叫它們的例項方法,就可以在其他空著的窗口裡面畫圖了

具體可以繪製的影象型別有直方圖,散點圖等等,以後慢慢補充它們用法。

fig,axes = plt.subplots(2,3)

這種用法,可以一下子產生2x3個子視窗,並且以numpy陣列的方式儲存在axes中,而fig仍然是整個影象物件,這樣我們可以通過對axes進行索引來訪問每個子視窗。

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 )

這一段最後一句就是調整影象邊框,使得各個圖之間的間距為0
由subplots或者add_subplot新增的子視窗都是AxesSubplot物件,支援一般plt支援的大部分繪圖命令。
suplots還可以通過sharex與sharey來指定subplot應該具有相同的x軸或y軸。調節xlim與ylim會自動縮放
各個圖表的界限。

繪圖的幾個重要的引數

color (c)關鍵字:這個可以是’g’,’k’等直接指定顏色的方法,也可以是與樣本點數量一致的一個numpy陣列,每個元素的值是0-1之間的一個浮點值,對應的是每個點對應所選定調色盤中的顏色值。這個在以不同顏色區分每種樣本的時候很有用。

linestytle(ls): 指定線型。如“–”虛線,’-.’ 點劃線

marker:指定點的樣式,如“o”每個點就是一個圓形。

設定標題、軸標籤、刻度以及刻度標籤

兩種方法一種是過程型的類matlab方式,另一種是原生的matplotlib API方式,一般傾向於後者

fig  = plt.figure(); ax = fig.add_subplot(1,1,1)
ax.plot( randn(1000).cumsum() )
#用於演示xticks的簡單線型圖
ticks = ax.set_xticks([0,250,500,750,1000]) #刻度在0,250,600,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')

#新增圖例
,最簡單的方法是在每次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(), 'k--', label = 'two' )
ax.plot( randn(1000).cumsum(),'k.',label = 'three' )
ax.legend( loc = 'best' )

新增圖例這塊,如果是散點圖,針對不同的樣本標誌不同的顏色,並顯示圖例,那麼這樣只能依次把樣本中每個不同類的點,分別放在不同的陣列中,分別用scatter來繪圖,並賦予不同的標籤,這樣就最後呼叫legend就能顯示圖例