標籤:data visualization 資料視覺效果 matplotlib numpy
簡介
matplotlib是python裡面的一個專業繪圖工具庫,如果想通過python來繪製漂亮的圖形,那麼一定少不了它了。
準備在開始畫圖之前需要安裝numpy以及matplotlib庫,當然python基本庫也必不可少,numpy是一個專業的數組,矩陣處理工具。
? Python
? Numpy- this is the module which does most array and mathematical manip-
ulation
? Matplotlib- this is the module you will be using for plotting
You can check these are installed by going to a terminal and typing:
匯入目標庫:
$ python>>> import numpy as np>>> import pylab as pl
基本繪圖直線或曲線
接下來咱們嘗試一下基礎的繪圖:
****************************************************# lineplot.pyimport numpy as npimport pylab as pl# Make an array of x valuesx = [1, 2, 3, 4, 5]# Make an array of y values for each x valuey = [1, 4, 9, 16, 25]# use pylab to plot x and ypl.plot(x, y)# show the plot on the screenpl.show()****************************************************
散佈圖 scatter plot
****************************************************# scatterplot.pyimport numpy as npimport pylab as pl# Make an array of x valuesx = [1, 2, 3, 4, 5]# Make an array of y values for each x valuey = [1, 4, 9, 16, 25]# use pylab to plot x and y as red circlespl.plot(x, y, ’ro’)# show the plot on the screenpl.show()****************************************************
圖形的基本屬性
當圖形中元素太多,可以通過改變點的顏色,大小,以及形狀來區分圖中的元素,matplot可以設定下列基本顏色:
pl.plot(x, y, ’r’)
這就能划出一條紅色的線。
如果要改變線的形態呢?有以下形態的線:
[‘-‘ |‘--‘ | ‘-.‘ |‘:‘ | ‘None‘ |‘ ‘ | ‘‘] |
plot(x,y, ’--’)
划出的就是一條虛線。
以及還能改變marker的形態:
如果我用以下代碼,畫出的就是藍色的星型標記:
plot(x,y, ’b*’)
label畫完圖當然得有標記,可以用xlabel和ylabel方法分別標記圖:
pl.xlabel(’put text here’)pl.ylabel(’put text here’)
當然還不能缺了title:
pl.title(’Put plot title here’)
如果發現圖的比例不太合適,那麼咱們可以調節圖的橫豎軸座標範圍:
pl.xlim(x_low, x_high)pl.ylim(y_low, y_high)
以下是一個樣本:
****************************************************#lineplotAxis.pyimport numpy as npimport pylab as pl# Make an array of x valuesx = [1, 2, 3, 4, 5]# Make an array of y values for each x valuey = [1, 4, 9, 16, 25]# use pylab to plot x and ypl.plot(x, y)# give plot a titlepl.title(’Plot of y vs. x’)# make axis labelspl.xlabel(’x axis’)pl.ylabel(’y axis’)# set axis limitspl.xlim(0.0, 7.0)pl.ylim(0.0, 30.)# show the plot on the screenpl.show()****************************************************
多個圖形在一張圖上畫多個圖形,可以連續的使用plot方法,注意的是為了方便區分圖形,可以使用不同的顏色:
plot(x1, y1, ’r’)plot(x2, y2, ’g’)
Figure legends matplot的legend文法如下:
pl.legend((plot1, plot2), (’label1, label2’), ’best’, numpoints=1)
第一個參數是咱們需要標記的圖形,如果畫面上又多個圖形,那麼可以用括弧括起來,第二個參數是具體的label,就是咱們希望說明給看圖的人這個圖形表示的是什麼,第三個參數表示的是我們希望將圖放在什麼位置,best表示系統自動放於最佳位置,當然可以自訂為‘upper right’, ‘upper left’, ‘center’, ‘lower left’, ‘lower right’.
以下是一個樣本圖:
****************************************************# lineplotFigLegend.pyimport numpy as npimport pylab as pl# Make x, y arrays for each graphx1 = [1, 2, 3, 4, 5]y1 = [1, 4, 9, 16, 25]x2 = [1, 2, 4, 6, 8]y2 = [2, 4, 8, 12, 16]# use pylab to plot x and y : Give your plots namesplot1 = pl.plot(x1, y1, ’r’)plot2 = pl.plot(x2, y2, ’go’)# give plot a titlepl.title(’Plot of y vs. x’)# make axis labelspl.xlabel(’x axis’)pl.ylabel(’y axis’)# set axis limitspl.xlim(0.0, 9.0)pl.ylim(0.0, 30.)# make legendpl.legend([plot1, plot2], (’red line’, ’green circles’), ’best’, numpoints=1)# show the plot on the screenpl.show()****************************************************
長條圖
以下是一個畫長條圖的例子:
****************************************************# histplot.pyimport numpy as npimport pylab as pl# make an array of random numbers with a gaussian distribution with# mean = 5.0# rms = 3.0# number of points = 1000data = np.random.normal(5.0, 3.0, 1000)# make a histogram of the data arraypl.hist(data)# make plot labelspl.xlabel(’data’)pl.show()****************************************************
這裡先用均值為5,方差為3的高斯分布產生了1000個點,再講這些點做長條圖,左圖是預設的格式,右圖是以下語句:
pl.hist(data, histtype=’stepfilled’)
當然也可以手動的設定長條圖中bin的大小多少:
bins = np.arange(-5., 16., 1.)pl.hist(data, bins, histtype=’stepfilled’)
一張畫布多張圖
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
python matplotlib 基礎