最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用matplotlib+numpy繪制多種繪圖的方法實例

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

前言

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

一、填充圖

參考代碼

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

當然fill_between函數(shù)還有更加高級的用法,詳見fill_between用法或者help文檔。

效果圖

二、散點圖(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ù)。這個函數(shù)接受三個參數(shù),分別表示正態(tài)分布的平均值,標準差,還有就是生成數(shù)組的長度。很好記。

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

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

至于scatter函數(shù)的高級用法可以參見官方文檔scatter函數(shù)或者help文檔。

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

效果圖

三、條形圖(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()

簡要分析

注意要手動導入pylab包,否則會找不到bar。。。

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

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

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

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

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

至于bar函數(shù)的具體用法可以參照bar函數(shù)用法或者help文檔。

效果圖

四、等高線圖(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()

簡要分析

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

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

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

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

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

效果圖

五、點陣圖

參考代碼

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()

簡要分析

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

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

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

最后用colorbar顯示一個色條,可以不傳參數(shù),這里傳進去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()

簡要分析

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

效果圖

總結(jié)

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

相關(guān)文章

  • Python實現(xiàn)批量識別銀行卡號碼以及自動寫入Excel表格步驟詳解

    Python實現(xiàn)批量識別銀行卡號碼以及自動寫入Excel表格步驟詳解

    這篇文章主要介紹了使用Python實現(xiàn)高效摸魚,批量識別銀行卡號碼并且自動寫入Excel表格,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • python找出完數(shù)的方法

    python找出完數(shù)的方法

    今天小編就為大家分享一篇python找出完數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python2與python3的print及字符串格式化小結(jié)

    python2與python3的print及字符串格式化小結(jié)

    最近一直在用python寫程序,對于python的print一直很惱火,老是不按照預期輸出。今天特來總結(jié)一樣print和format,也希望能幫助大家徹底理解它們
    2018-11-11
  • 教你如何用python爬取王者榮耀月收入流水線

    教你如何用python爬取王者榮耀月收入流水線

    這篇文章主要介紹了教你如何用python爬取王者榮耀月收入流水線,對正在學習python的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • Python Numpy庫常見用法入門教程

    Python Numpy庫常見用法入門教程

    這篇文章主要介紹了Python Numpy庫常見用法,結(jié)合實例形式詳細Fenix了Python numpy庫基本功能、原理以及數(shù)組常見操作技巧,需要的朋友可以參考下
    2020-01-01
  • 詳解如何使用python打印出多樣字符

    詳解如何使用python打印出多樣字符

    當你第一次進入Python的世界里,學到的第一句代碼是不是print("Hello?World"),今天,讓我們一起來開啟探索print()的奇妙之旅,從最基礎(chǔ)的打印字符用法到讓它跳舞唱歌——動態(tài)顯示,讓我們一步步解鎖print()的各種技能吧,需要的朋友可以參考下
    2024-03-03
  • Python入門教程(三十三)Python的字符串格式化

    Python入門教程(三十三)Python的字符串格式化

    這篇文章主要介紹了Python入門教程(三十三)Python的字符串格式化,為了確保字符串按預期顯示,我們可以使用 format()方法對結(jié)果進行格式化,需要的朋友可以參考下
    2023-05-05
  • 代碼詳解Python的函數(shù)基礎(chǔ)(1)

    代碼詳解Python的函數(shù)基礎(chǔ)(1)

    這篇文章主要為大家詳細介紹了Python的函數(shù)基礎(chǔ),使用了函數(shù)調(diào)用和函數(shù)定義,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 用selenium解決滑塊驗證碼的實現(xiàn)步驟

    用selenium解決滑塊驗證碼的實現(xiàn)步驟

    驗證碼作為一種自然人的機器人的判別工具,被廣泛的用于各種防止程序做自動化的場景中,下面這篇文章主要給大家介紹了關(guān)于用selenium解決滑塊驗證碼的實現(xiàn)步驟,需要的朋友可以參考下
    2023-02-02
  • Python使用Mechanize模塊編寫爬蟲的要點解析

    Python使用Mechanize模塊編寫爬蟲的要點解析

    這篇文章主要介紹了Python使用Mechanize模塊編寫爬蟲的要點解析,作者還講解了Mechanize程序占用內(nèi)存過高問題的相關(guān)解決方法,需要的朋友可以參考下
    2016-03-03

最新評論

图片| 闽侯县| 嘉善县| 榆中县| 荣成市| 漳州市| 万年县| 兴义市| 徐闻县| 桂林市| 南昌市| 吉安县| 诸暨市| 新河县| 渭源县| 黎平县| 嘉鱼县| 当涂县| 体育| 巧家县| 祁阳县| 漳平市| 赤峰市| 晋州市| 筠连县| 蒙城县| 西贡区| 东兴市| 天镇县| 荆州市| 育儿| 桂平市| 怀来县| 南乐县| 合作市| 上蔡县| 凤山市| 通化县| 巫山县| 桃园市| 桦南县|