欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用matplotlib+numpy繪制多種繪圖的方法實(shí)例

 更新時(shí)間:2017年05月03日 11:12:36   作者:Myths  
matplotlib是Python最著名的繪圖庫,本文給大家分享了利用matplotlib+numpy繪制多種繪圖的方法實(shí)例,其中包括填充圖、散點(diǎn)圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點(diǎn)陣圖和3D圖,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

matplotlib 是Python最著名的繪圖庫,它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。本文將以例子的形式分析matplot中支持的,分析中常用的幾種圖。其中包括填充圖、散點(diǎn)圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點(diǎn)陣圖和3D圖,下面來一起看看詳細(xì)的介紹:

一、填充圖

參考代碼

from matplotlib.pyplot import *
x=linspace(-3,3,100)
y1=np.sin(x)
y2=np.cos(x)
fill_between(x,y1,y2,where=(y1>=y2),color='red',alpha=0.25)
fill_between(x,y1,y2,where=(y<>y2),color='green',alpha=0.25)
plot(x,y1)
plot(x,y2)
show()

簡要分析

這里主要是用到了fill_between函數(shù)。這個(gè)函數(shù)很好理解,就是傳入x軸的數(shù)組和需要填充的兩個(gè)y軸數(shù)組;然后傳入填充的范圍,用where=來確定填充的區(qū)域;最后可以加上填充顏色啦,透明度之類修飾的參數(shù)。

當(dāng)然fill_between函數(shù)還有更加高級(jí)的用法,詳見fill_between用法或者h(yuǎn)elp文檔。

效果圖

二、散點(diǎn)圖(scatter plots)

參考代碼

from matplotlib.pyplot import *
n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)
scatter(X,Y, s=75, c=T, alpha=.5)
xlim(-1.5,1.5)
ylim(-1.5,1.5)
show()

簡要分析

首先介紹一下numpy 的normal函數(shù),很明顯,這是生成正態(tài)分布的函數(shù)。這個(gè)函數(shù)接受三個(gè)參數(shù),分別表示正態(tài)分布的平均值,標(biāo)準(zhǔn)差,還有就是生成數(shù)組的長度。很好記。

然后是arctan2函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù),分別表示y數(shù)組和x數(shù)組,然后返回對(duì)應(yīng)的arctan(y/x)的值,結(jié)果是弧度制。

接下來用到了繪制散點(diǎn)圖的scatter方法,首先當(dāng)然是傳入x和y數(shù)組,接著s參數(shù)表示scale,即散點(diǎn)的大??;c參數(shù)表示color,我給他傳的是根據(jù)角度劃分的一個(gè)數(shù)組,對(duì)應(yīng)的就是每一個(gè)點(diǎn)的顏色(雖然不知道是怎么對(duì)應(yīng)的,不過好像是一個(gè)根據(jù)數(shù)組內(nèi)其他元素進(jìn)行的相對(duì)的轉(zhuǎn)換,這里不重要了,反正相同的顏色賦一樣的值就好了);最后是alpha參數(shù),表示點(diǎn)的透明度。

至于scatter函數(shù)的高級(jí)用法可以參見官方文檔scatter函數(shù)或者h(yuǎn)elp文檔。

最后設(shè)置下坐標(biāo)范圍就好了。

效果圖

三、條形圖(bar plots)

參考代碼

from matplotlib.pyplot import *
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)
bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x,y in zip(X,Y1):
 text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
for x,y in zip(X,Y2):
 text(x+0.4, -y-0.05, '%.2f' % y, ha='center', va= 'top')
xlim(-.5,n)
xticks([])
ylim(-1.25,+1.25)
yticks([])
show()

簡要分析

注意要手動(dòng)導(dǎo)入pylab包,否則會(huì)找不到bar。。。

首先用numpy的arange函數(shù)生成一個(gè)[0,1,2,…,n]的數(shù)組。(用linspace也可以)

其次用numpy的uniform函數(shù)生成一個(gè)均勻分布的數(shù)組,傳入三個(gè)參數(shù)分別表示下界、上界和數(shù)組長度。并用這個(gè)數(shù)組生成需要顯示的數(shù)據(jù)。

然后就是bar函數(shù)的使用了,基本用法也和之前的plot、scatter類似,傳入橫縱坐標(biāo)和一些修飾性參數(shù)。

接著我們需要用for循環(huán)來為柱狀圖顯示數(shù)字:用python的zip函數(shù)將X和Y1兩兩配對(duì)并循環(huán)遍歷,得到每一個(gè)數(shù)據(jù)的位置,然后用text函數(shù)在該位置上顯示一個(gè)字符串(注意位置上的細(xì)節(jié)調(diào)整)。text傳入橫縱坐標(biāo),要顯示的字符串,ha參數(shù)制定橫向?qū)R,va參數(shù)制定縱向?qū)R。

最后調(diào)整下坐標(biāo)范圍,并且取消橫縱坐標(biāo)上的刻度以保持美觀即可。

至于bar函數(shù)的具體用法可以參照bar函數(shù)用法或者h(yuǎn)elp文檔。

效果圖

四、等高線圖(contour plots)

參考代碼

from matplotlib.pyplot import *
def f(x,y):
 return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)
contourf(X, Y, f(X,Y), 8, alpha=.75, cmap=cm.hot)
C = contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)
clabel(C, inline=1, fontsize=10)
show()

簡要分析

首先要明確等高線圖是一個(gè)三維立體圖,所以我們要建立一個(gè)二元函數(shù)f,值由兩個(gè)參數(shù)控制,(注意,這兩個(gè)參數(shù)都應(yīng)該是矩陣)。

然后我們需要用numpy的meshgrid函數(shù)生成一個(gè)三維網(wǎng)格,即,x軸由第一個(gè)參數(shù)指定,y軸由第二個(gè)參數(shù)指定。并返回兩個(gè)增維后的矩陣,今后就用這兩個(gè)矩陣來生成圖像。

接著就用到coutourf函數(shù)了,所謂contourf,大概就是contour fill的意思吧,只填充,不描邊;這個(gè)函數(shù)主要是接受三個(gè)參數(shù),分別是之前生成的x、y矩陣和函數(shù)值;接著是一個(gè)整數(shù),大概就是表示等高線的密度了,有默認(rèn)值;然后就是透明度和配色問題了,cmap的配色方案這里不多研究。

隨后就是contour函數(shù)了,很明顯,這個(gè)函數(shù)是用來描線的。用法可以類似的推出來,不解釋了,需要注意的是他返回一個(gè)對(duì)象,這個(gè)對(duì)象一般要保留下來個(gè)供后續(xù)的加工細(xì)化。

最后就是用clabel函數(shù)來在等高線圖上表示高度了,傳入之前的那個(gè)contour對(duì)象;然后是inline屬性,這個(gè)表示是否清除數(shù)字下面的那條線,為了美觀當(dāng)然是清除了,而且默認(rèn)的也是1;再就是指定線的寬度了,不解釋,。

效果圖

五、點(diǎn)陣圖

參考代碼

from matplotlib.pyplot import *
def f(x,y):
 return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 10
x = np.linspace(-3,3,3.5*n)
y = np.linspace(-3,3,3.0*n)
X,Y = np.meshgrid(x,y)
Z = f(X,Y)
imshow(Z,interpolation='nearest', cmap='bone', origin='lower')
colorbar(shrink=.92)
show()

簡要分析

這段代碼的目的就是將一個(gè)矩陣直接轉(zhuǎn)換為一張像照片一樣的圖,完整的進(jìn)行顯示。

前面的代碼就是生成一個(gè)矩陣Z,不作解釋。

接著用到了imshow函數(shù),傳人Z就可以顯示出一個(gè)二維的圖像了,圖像的顏色是根據(jù)元素的值進(jìn)行的自適應(yīng)調(diào)整,后面接了一些修飾性的參數(shù),比如配色方案(cmap),零點(diǎn)位置(origin)。

最后用colorbar顯示一個(gè)色條,可以不傳參數(shù),這里傳進(jìn)去shrink參數(shù)用來調(diào)節(jié)他的長度。

效果圖

六、3D圖

參考代碼

import numpy as np
from pylab import *
from mpl_toolkits.mplot3d import Axes3D
fig = figure()
ax = Axes3D(fig)
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 = np.sin(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot)
ax.set_zlim(-2,2)
show()

簡要分析

有點(diǎn)麻煩,需要用到的時(shí)候再說吧,不過原理也很簡單,跟等高線圖類似,先畫圖再描線,最后設(shè)置高度,都是一回事。

效果圖

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python登錄接口如何獲取token并保存到文件中

    Python登錄接口如何獲取token并保存到文件中

    這篇文章主要介紹了Python登錄接口如何獲取token并保存到文件中問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python人工智能算法之決策樹流程示例詳解

    python人工智能算法之決策樹流程示例詳解

    這篇文章主要為大家介紹了python人工智能算法之決策樹流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 刪除目錄下相同文件的python代碼(逐級(jí)優(yōu)化)

    刪除目錄下相同文件的python代碼(逐級(jí)優(yōu)化)

    讓我們來分析一下這個(gè)問題:首先,文件個(gè)數(shù)非常多,手工查找是不現(xiàn)實(shí)的,再說,單憑我們?nèi)庋?,在幾千張圖片里面找到完全相同的難度也是很大的
    2012-05-05
  • 在PyCharm下使用 ipython 交互式編程的方法

    在PyCharm下使用 ipython 交互式編程的方法

    今天小編就為大家分享一篇在PyCharm下使用 ipython 交互式編程的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python裝飾器詳細(xì)介紹

    Python裝飾器詳細(xì)介紹

    這篇文章主要介紹了Python裝飾器詳細(xì)講解,包括裝飾器的功能及實(shí)現(xiàn)方法,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 淺談python中np.array的shape( ,)與( ,1)的區(qū)別

    淺談python中np.array的shape( ,)與( ,1)的區(qū)別

    今天小編就為大家分享一篇python中np.array的shape ( ,)與( ,1)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python筆記:mysql、redis操作方法

    python筆記:mysql、redis操作方法

    下面小編就為大家?guī)硪黄猵ython筆記:mysql、redis操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 基于打開pycharm有帶圖片md文件卡死問題的解決

    基于打開pycharm有帶圖片md文件卡死問題的解決

    這篇文章主要介紹了基于打開pycharm有帶圖片md文件卡死問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 解決使用export_graphviz可視化樹報(bào)錯(cuò)的問題

    解決使用export_graphviz可視化樹報(bào)錯(cuò)的問題

    今天小編就為大家分享一篇解決使用export_graphviz可視化樹報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 基于Python實(shí)現(xiàn)地標(biāo)景點(diǎn)識(shí)別功能

    基于Python實(shí)現(xiàn)地標(biāo)景點(diǎn)識(shí)別功能

    地標(biāo)景點(diǎn)識(shí)別是一種基于計(jì)算機(jī)視覺技術(shù)的應(yīng)用,旨在通過對(duì)圖像進(jìn)行分析和處理,自動(dòng)識(shí)別出圖片中的地標(biāo)景點(diǎn),本文將介紹地標(biāo)景點(diǎn)識(shí)別的背景和原理,并使用Python編程語言來實(shí)現(xiàn)一個(gè)簡單的地標(biāo)景點(diǎn)識(shí)別系統(tǒng),感興趣的朋友可以參考下
    2024-01-01

最新評(píng)論