使用python的matplotlib畫正弦函數(shù)圖像,還要用到numpy庫(kù),代碼如下9行所示:
創(chuàng)新互聯(lián)是專業(yè)的臺(tái)江網(wǎng)站建設(shè)公司,臺(tái)江接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行臺(tái)江網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
import numpy as np;
from matplotlib import pyplot as plt;
fig = plt.figure();
ax2= fig.add_subplot(111);
x=np.arange(0,100)/10;
y=np.sin(x);
ax2.plot(x,y);
plt.savefig('sine.png');
plt.show();
作者:邁克爾·貝耶勒(Michael Beyeler)
如需轉(zhuǎn)載請(qǐng)聯(lián)系華章 科技
如果已安裝Anaconda Python版本,就已經(jīng)安裝好了可以使用的 Matplotlib。否則,可能要訪問(wèn)官網(wǎng)并從中獲取安裝說(shuō)明:
正如使用np作為 NumPy 的縮寫,我們將使用一些標(biāo)準(zhǔn)的縮寫來(lái)表示 Matplotlib 的引入:
在本書中,plt接口會(huì)被頻繁使用。
讓我們創(chuàng)建第一個(gè)繪圖。
假設(shè)想要畫出正弦函數(shù)sin(x)的線性圖。得到函數(shù)在x坐標(biāo)軸上0≤x<10內(nèi)所有點(diǎn)的值。我們將使用 NumPy 中的 linspace 函數(shù)來(lái)在x坐標(biāo)軸上創(chuàng)建一個(gè)從0到10的線性空間,以及100個(gè)采樣點(diǎn):
可以使用 NumPy 中的sin函數(shù)得到所有x點(diǎn)的值,并通過(guò)調(diào)用plt中的plot函數(shù)把結(jié)果畫出來(lái):
你親自嘗試了嗎?發(fā)生了什么嗎?有沒(méi)有什么東西出現(xiàn)?
實(shí)際情況是,取決于你在哪里運(yùn)行腳本,可能無(wú)法看到任何東西。有下面幾種可能性:
1. 從.py腳本中繪圖
如果從一個(gè)腳本中運(yùn)行 Matplotlib,需要加上下面的這行調(diào)用:
在腳本末尾調(diào)用這個(gè)函數(shù),你的繪圖就會(huì)出現(xiàn)!
2. 從 IPython shell 中繪圖
這實(shí)際上是交互式地執(zhí)行Matplotlib最方便的方式。為了讓繪圖出現(xiàn),需要在啟動(dòng) IPython 后使用所謂的%matplotlib魔法命令。
接下來(lái),無(wú)須每次調(diào)用plt.show()函數(shù),所有的繪圖將會(huì)自動(dòng)出現(xiàn)。
3. 從 Jupyter Notebook 中繪圖
如果你是從基于瀏覽器的 Jupyter Notebook 中看這段代碼,需要使用同樣的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入圖形,這會(huì)有兩種輸出選項(xiàng):
在本書中,將會(huì)使用inline選項(xiàng):
現(xiàn)在再次嘗試一下:
上面的命令會(huì)得到下面的繪圖輸出結(jié)果:
如果想要把繪圖保存下來(lái)留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:
僅需要確保你使用了支持的文件后綴,比如.jpg、.png、.tif、.svg、.eps或者.pdf。
作為本章最后一個(gè)測(cè)試,讓我們對(duì)外部數(shù)據(jù)集進(jìn)行可視化,比如scikit-learn中的數(shù)字?jǐn)?shù)據(jù)集。
為此,需要三個(gè)可視化工具:
那么開始引入這些包吧:
第一步是載入實(shí)際數(shù)據(jù):
如果沒(méi)記錯(cuò)的話,digits應(yīng)該有兩個(gè)不同的數(shù)據(jù)域:data域包含了真正的圖像數(shù)據(jù),target域包含了圖像的標(biāo)簽。相對(duì)于相信我們的記憶,我們還是應(yīng)該對(duì)digits稍加 探索 。輸入它的名字,添加一個(gè)點(diǎn)號(hào),然后按Tab鍵:digits.TAB,這個(gè)操作將向我們展示digits也包含了一些其他的域,比如一個(gè)名為images的域。images和data這兩個(gè)域,似乎簡(jiǎn)單從形狀上就可以區(qū)分。
兩種情況中,第一維對(duì)應(yīng)的都是數(shù)據(jù)集中的圖像數(shù)量。然而,data中所有像素都在一個(gè)大的向量中排列,而images保留了各個(gè)圖像8×8的空間排列。
因此,如果想要繪制出一副單獨(dú)的圖像,使用images將更加合適。首先,使用NumPy的數(shù)組切片從數(shù)據(jù)集中獲取一幅圖像:
這里是從1797個(gè)元素的數(shù)組中獲取了它的第一行數(shù)據(jù),這行數(shù)據(jù)對(duì)應(yīng)的是8×8=64個(gè)像素。下面就可以使用plt中的imshow函數(shù)來(lái)繪制這幅圖像:
上面的命令得到下面的輸出:
此外,這里也使用cmap參數(shù)指定了一個(gè)顏色映射。默認(rèn)情況下,Matplotlib 使用MATLAB默認(rèn)的顏色映射jet。然而,在灰度圖像的情況下,gray顏色映射更有效。
最后,可以使用plt的subplot函數(shù)繪制全部數(shù)字的樣例。subplot函數(shù)與MATLAB中的函數(shù)一樣,需要指定行數(shù)、列數(shù)以及當(dāng)前的子繪圖索引(從1開始計(jì)算)。我們將使用for 循環(huán)在數(shù)據(jù)集中迭代出前十張圖像,每張圖像都分配到一個(gè)單獨(dú)的子繪圖中。
這會(huì)得到下面的輸出結(jié)果:
關(guān)于作者:Michael Beyeler,華盛頓大學(xué)神經(jīng)工程和數(shù)據(jù)科學(xué)專業(yè)的博士后,主攻仿生視覺(jué)計(jì)算模型,用以為盲人植入人工視網(wǎng)膜(仿生眼睛),改善盲人的視覺(jué)體驗(yàn)。 他的工作屬于神經(jīng)科學(xué)、計(jì)算機(jī)工程、計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)的交叉領(lǐng)域。同時(shí)他也是多個(gè)開源項(xiàng)目的積極貢獻(xiàn)者。
本文摘編自《機(jī)器學(xué)習(xí):使用OpenCV和Python進(jìn)行智能圖像處理》,經(jīng)出版方授權(quán)發(fā)布。
import
numpy
as
np
import
matplotlib.pyplot
as
plt
#從-π到π取201個(gè)變量(取得多點(diǎn)線就圓滑一點(diǎn),這是源碼寫的例子201不知道有啥特殊之處,反正取100也行)
x
=
np.linspace(-np.pi,
np.pi,
201)
#計(jì)算201個(gè)變量對(duì)應(yīng)的值連成線
plt.plot(x,
np.sin(x))
plt.plot(x,
np.cos(x))
#將畫成的圖顯示出來(lái)
plt.show()
大概就是這個(gè)意思,有錯(cuò)誤的還請(qǐng)指教
因?yàn)?pow 是內(nèi)置的方法,而 sin 是 math 包提供的方法。
如果你自己定義了一個(gè) pow 方法,就會(huì)覆蓋掉默認(rèn)的 pow 方法,但是如果你 import 了兩個(gè)包,兩個(gè)里面都有 sin 方法,那么使用的時(shí)候如果不指定是哪個(gè)的話就無(wú)法準(zhǔn)確執(zhí)行了。同理,如果引用的是外部包的方法或者類的話,就一定要使用包名引用。如果每次打包名嫌麻煩的話,可以使用 import math as m 這樣的縮寫,下次就可以使用 m.sin() 了。
用python怎樣畫出如題所示的正余弦函數(shù)圖像? 如此編寫代碼,使其中兩個(gè)軸、圖例、刻度,大小,LaTex公式等要素與原圖一致,需要用到的代碼如下,沒(méi)有縮進(jìn):
#-*-codeing:utf-8;-*-
from matplotlib import pyplot as plt
import numpy as np
a=np.linspace(0,360,980)
b=np.sin(a/180*np.pi)
c=np.cos(a/180*np.pi)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 360])
ax.plot(a,b,label=r"$y=\sin(\theta)$")
ax.plot(a,c,label=r"$y=\cos(\theta)$")
ax.grid(True)
ax.set_ylabel(r"$y$")
ax.set_xlabel(r"$\theta$")
plt.xticks(np.arange(0,360+1,45))
plt.title("Sine Cosine Waves")
plt.legend()
plt.savefig("SinCosWaveDegFont.jpg")
plt.show()
代碼運(yùn)行show的窗口圖
代碼的截圖
代碼輸出的文件的圖
Python編碼下面的三角函數(shù)包括以下種類:acos(x)//返回x的反余弦弧度值。asin(x)//返回x的反正弦弧度值。atan(x)//返回x的反正切弧度值。atan2(y,x)//返回給定的X及Y坐標(biāo)值的反正切值。cos(x)//返回x的弧度的余弦值。hypot(x,y
描述
sin()返回的x弧度的正弦值。
語(yǔ)法
以下是sin()方法的語(yǔ)法:
importmath
math.sin(x)
注意:sin()是不能直接訪問(wèn)的,需要導(dǎo)入math模塊,然后通過(guò)math靜態(tài)對(duì)象調(diào)用該方法。
參數(shù)
x--一個(gè)數(shù)值。
返回值
返回的x弧度的正弦值,數(shù)值在-1到1之間。
實(shí)例
以下展示了使用sin()方法的實(shí)例:
#!/usr/bin/python
import math
print "sin(3) : ", math.sin(3)
print "sin(-3) : ", math.sin(-3)
print "sin(0) : ", math.sin(0)
print "sin(math.pi) : ", math.sin(math.pi)
print "sin(math.pi/2) : ", math.sin(math.pi/2)
以上實(shí)例運(yùn)行后輸出結(jié)果為:
sin(3) : 0.14112000806
sin(-3) : -0.14112000806
sin(0) : 0.0
sin(math.pi) : 1.22460635382e-16
sin(math.pi/2) : 1
總結(jié)
以上就是本文關(guān)于Python入門之三角函數(shù)sin()函數(shù)實(shí)例詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:python正則表達(dá)式re之compile函數(shù)解析、Python中enumerate函數(shù)代碼解析、簡(jiǎn)單了解Python中的幾種函數(shù)等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝朋友們對(duì)本站的支持!