python繪圖的函數 python 函數畫圖

Python實操:手把手教你用Matplotlib把數據畫出來

作者:邁克爾·貝耶勒(Michael Beyeler)

成都創新互聯公司是專業的巴中網站建設公司,巴中接單;提供成都網站建設、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行巴中網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

如需轉載請聯系華章 科技

如果已安裝Anaconda Python版本,就已經安裝好了可以使用的 Matplotlib。否則,可能要訪問官網并從中獲取安裝說明:

正如使用np作為 NumPy 的縮寫,我們將使用一些標準的縮寫來表示 Matplotlib 的引入:

在本書中,plt接口會被頻繁使用。

讓我們創建第一個繪圖。

假設想要畫出正弦函數sin(x)的線性圖。得到函數在x坐標軸上0≤x<10內所有點的值。我們將使用 NumPy 中的 linspace 函數來在x坐標軸上創建一個從0到10的線性空間,以及100個采樣點:

可以使用 NumPy 中的sin函數得到所有x點的值,并通過調用plt中的plot函數把結果畫出來:

你親自嘗試了嗎?發生了什么嗎?有沒有什么東西出現?

實際情況是,取決于你在哪里運行腳本,可能無法看到任何東西。有下面幾種可能性:

1. 從.py腳本中繪圖

如果從一個腳本中運行 Matplotlib,需要加上下面的這行調用:

在腳本末尾調用這個函數,你的繪圖就會出現!

2. 從 IPython shell 中繪圖

這實際上是交互式地執行Matplotlib最方便的方式。為了讓繪圖出現,需要在啟動 IPython 后使用所謂的%matplotlib魔法命令。

接下來,無須每次調用plt.show()函數,所有的繪圖將會自動出現。

3. 從 Jupyter Notebook 中繪圖

如果你是從基于瀏覽器的 Jupyter Notebook 中看這段代碼,需要使用同樣的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入圖形,這會有兩種輸出選項:

在本書中,將會使用inline選項:

現在再次嘗試一下:

上面的命令會得到下面的繪圖輸出結果:

如果想要把繪圖保存下來留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:

僅需要確保你使用了支持的文件后綴,比如.jpg、.png、.tif、.svg、.eps或者.pdf。

作為本章最后一個測試,讓我們對外部數據集進行可視化,比如scikit-learn中的數字數據集。

為此,需要三個可視化工具:

那么開始引入這些包吧:

第一步是載入實際數據:

如果沒記錯的話,digits應該有兩個不同的數據域:data域包含了真正的圖像數據,target域包含了圖像的標簽。相對于相信我們的記憶,我們還是應該對digits稍加 探索 。輸入它的名字,添加一個點號,然后按Tab鍵:digits.TAB,這個操作將向我們展示digits也包含了一些其他的域,比如一個名為images的域。images和data這兩個域,似乎簡單從形狀上就可以區分。

兩種情況中,第一維對應的都是數據集中的圖像數量。然而,data中所有像素都在一個大的向量中排列,而images保留了各個圖像8×8的空間排列。

因此,如果想要繪制出一副單獨的圖像,使用images將更加合適。首先,使用NumPy的數組切片從數據集中獲取一幅圖像:

這里是從1797個元素的數組中獲取了它的第一行數據,這行數據對應的是8×8=64個像素。下面就可以使用plt中的imshow函數來繪制這幅圖像:

上面的命令得到下面的輸出:

此外,這里也使用cmap參數指定了一個顏色映射。默認情況下,Matplotlib 使用MATLAB默認的顏色映射jet。然而,在灰度圖像的情況下,gray顏色映射更有效。

最后,可以使用plt的subplot函數繪制全部數字的樣例。subplot函數與MATLAB中的函數一樣,需要指定行數、列數以及當前的子繪圖索引(從1開始計算)。我們將使用for 循環在數據集中迭代出前十張圖像,每張圖像都分配到一個單獨的子繪圖中。

這會得到下面的輸出結果:

關于作者:Michael Beyeler,華盛頓大學神經工程和數據科學專業的博士后,主攻仿生視覺計算模型,用以為盲人植入人工視網膜(仿生眼睛),改善盲人的視覺體驗。 他的工作屬于神經科學、計算機工程、計算機視覺和機器學習的交叉領域。同時他也是多個開源項目的積極貢獻者。

本文摘編自《機器學習:使用OpenCV和Python進行智能圖像處理》,經出版方授權發布。

Python繪圖Turtle庫詳解

?Turtle庫是Python語言中一個很流行的繪制圖像的函數庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形。

turtle 繪圖的基礎知識:

1. 畫布(canvas)

? ? 畫布就是turtle為我們展開用于繪圖區域,我們可以設置它的大小和初始位置。

? ? 設置畫布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數分別為畫布的寬(單位像素), 高, 背景顏色。

? ? 如:turtle.screensize(800,600, "green")

turtle.screensize()?#返回默認大小(400, 300)

? ? turtle.setup(width=0.5, height=0.75,

startx=None, starty=None),參數:width, height: 輸入寬和高為整數時, 表示像素; 為小數時, 表示占據電腦屏幕的比例,(startx, starty): 這一坐標表示矩形窗口左上角頂點的位置, 如果為空,則窗口位于屏幕中心。

? ? 如:turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800, startx=100, starty=100)

2. 畫筆

2.1 畫筆的狀態

? ? 在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2.2 畫筆的屬性

? ? 畫筆(畫筆的屬性,顏色、畫線的寬度等)

? ? 1) turtle.pensize():設置畫筆的寬度;

? ? 2) turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。

? ? 3) turtle.speed(speed):設置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數,數字越大越快。

2.3 繪圖命令

? ? ?操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全局控制命令。

(1)????畫筆運動命令

命令說明

turtle.forward(distance)向當前畫筆方向移動distance像素長度

turtle.backward(distance)向當前畫筆相反方向移動distance像素長度

turtle.right(degree)順時針移動degree°

turtle.left(degree)逆時針移動degree°

turtle.pendown()移動時繪制圖形,缺省時也為繪制

turtle.goto(x,y)將畫筆移動到坐標為x,y的位置

turtle.penup()提起筆移動,不繪制圖形,用于另起一個地方繪制

turtle.circle()畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓

setx( )將當前x軸移動到指定位置

sety( )將當前y軸移動到指定位置

setheading(angle)設置當前朝向為angle角度

home()設置當前畫筆位置為原點,朝向東。

dot(r)繪制一個指定直徑和顏色的圓點

(2)???? 畫筆控制命令

命令說明

turtle.fillcolor(colorstring)繪制圖形的填充顏色

turtle.color(color1, color2)同時設置pencolor=color1, fillcolor=color2

turtle.filling()返回當前是否在填充狀態

turtle.begin_fill()準備開始填充圖形

turtle.end_fill()填充完成

turtle.hideturtle()隱藏畫筆的turtle形狀

turtle.showturtle()顯示畫筆的turtle形狀

(3)????全局控制命令

命令說明

turtle.clear()清空turtle窗口,但是turtle的位置和狀態不會改變

turtle.reset()清空窗口,重置turtle狀態為起始狀態

turtle.undo()撤銷上一個turtle動作

turtle.isvisible()返回當前turtle是否可見

stamp()復制當前圖形

turtle.write(s

[,font=("font-name",font_size,"font_type")])

寫文本,s為文本內容,font是字體的參數,分別為字體名稱,大小和類型;font為可選項,font參數也是可選項

(4)????其他命令

命令說明

turtle.mainloop()或turtle.done()啟動事件循環 -調用Tkinter的mainloop函數。

必須是烏龜圖形程序中的最后一個語句。

turtle.mode(mode=None)設置烏龜模式(“standard”,“logo”或“world”)并執行重置。如果沒有給出模式,則返回當前模式。

模式初始龜標題正角度

standard向右(東)逆時針

logo向上(北)順時針

turtle.delay(delay=None)設置或返回以毫秒為單位的繪圖延遲。

turtle.begin_poly()開始記錄多邊形的頂點。當前的烏龜位置是多邊形的第一個頂點。

turtle.end_poly()停止記錄多邊形的頂點。當前的烏龜位置是多邊形的最后一個頂點。將與第一個頂點相連。

turtle.get_poly()返回最后記錄的多邊形。

python之pyplot

1、 定義x和y,畫圖展示,保存圖片

其中dpi參數指定圖像的分辨率為120

2、 優化繪圖線條風格

線條顏色color

線條標記marker

線條風格linestyle

3、 坐標軸的控制

坐標軸范圍和標題

坐標圖上標記

坐標間隔設定

函數plt.xticks()和plt.xticks()用來實現對x軸和y軸坐標間隔(也就是軸記號)的設定。用法上,函數的輸入是兩個列表,第一個表示取值,第二個表示標記。當然如果你的標記就是取值本身,則第二個列表可以忽略

多圖與子圖

figure() 函數可以幫助我們同時處理生成多個圖,而subplot()函數則用來實現,在一個大圖中,出現多個小的子圖。需要注意的是, figure() 中的參數為圖片序號,一般是按序增加的,這里面還涉及一個當前圖的概念,其中 subplot() 的參數有3個,分別為行數、列數、以及子圖序號。比如 subplot(1,2,1) 表示這是一個1行,2列布局的圖(兩個子圖,在同一行,分居左右),其中,當前處理的子圖是第一個圖(也就是左圖)。

這樣,我們就用一個腳本畫了兩張圖fig.1和fig.2。其中,fig.1包含了分居左右的兩個子圖,分別是y1和y3的曲線;fig.2是一張整圖,畫的是y2曲線。

如果想要某個子圖占據整行或者整列,可以采用下面

第三個圖,實際上相當于將前面的兩個小的子圖看作是一個整圖

用Python畫圖

今天開始琢磨用Python畫圖,沒使用之前是一臉懵的,我使用的開發環境是Pycharm,這個輸出的是一行行命令,這個圖畫在哪里呢?

搜索之后發現,它會彈出一個對話框,然后就開始畫了,比如下圖

第一個常用的庫是Turtle,它是Python語言中一個很流行的繪制圖像的函數庫,這個詞的意思就是烏龜,你可以想象下一個小烏龜在一個x和y軸的平面坐標系里,從原點開始根據指令控制,爬行出來就是繪制的圖形了。

它最常用的指令就是旋轉和移動,比如畫個圓,就是繞著圓心移動;再比如上圖這個怎么畫呢,其實主要就兩個命令:

turtle.forward(200)

turtle.left(170)

第一個命令是移動200個單位并畫出來軌跡

第二個命令是畫筆順時針轉170度,注意此時并沒有移動,只是轉角度

然后呢? 循環重復就畫出來這個圖了

好玩吧。

有需要仔細研究的可以看下這篇文章 ,這個牛人最后用這個庫畫個移動的鐘表,太贊了。

Turtle雖好玩,但是我想要的是我給定數據,然后讓它畫圖,這里就找到另一個常用的畫圖的庫了。

Matplotlib是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地行制圖。其中,matplotlib的pyplot模塊一般是最常用的,可以方便用戶快速繪制二維圖表。

使用起來也挺簡單,

首先import matplotlib.pyplot as plt?導入畫圖的圖。

然后給定x和y,用這個命令plt.plot(x, y)就能畫圖了,接著用plt.show()就可以把圖形展示出來。

接著就是各種完善,比如加標題,設定x軸和y軸標簽,范圍,顏色,網格等等,在 這篇文章里介紹的很詳細。

現在互聯網的好處就是你需要什么內容,基本上都能搜索出來,而且還是免費的。

我為什么要研究這個呢?當然是為了用,比如我把比特幣的曲線自己畫出來可好?

假設現在有個數據csv文件,一列是日期,另一列是比特幣的價格,那用這個命令畫下:

這兩列數據讀到pandas中,日期為df['time']列,比特幣價格為df['ini'],那我只要使用如下命令

plt.plot(df['time'], df['ini'])

plt.show()

就能得到如下圖:

自己畫的是不是很香,哈哈!

然后呢,我在上篇文章 中介紹過求Ahr999指數,那可不可以也放到這張圖中呢?不就是加一條命令嘛

plt.plot(df['time'], df['Ahr999'])

圖形如下:

但是,Ahr999指數怎么就一條線不動啊,?原來兩個Y軸不一致,顯示出來太怪了,需要用多Y軸,問題來了。

繼續谷歌一下,把第二個Y軸放右邊就行了,不過呢得使用多圖,重新繪制

fig = plt.figure() # 多圖

ax1 = fig.add_subplot(111)

ax1.plot(df['time'], df['ini'], label="BTC price")? #?繪制第一個圖比特幣價格

ax1.set_ylabel('BTC price') #?加上標簽

# 第二個直接對稱就行了

ax2 = ax1.twinx()#?在右邊增加一個Y軸

ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")??#?繪制第二個圖Ahr999指數,紅色

ax2.set_ylim([0, 50])# 設定第二個Y軸范圍

ax2.set_ylabel('ahr999')

plt.grid(color="k", linestyle=":")# 網格

fig.legend(loc="center")#圖例

plt.show()

跑起來看看效果,雖然丑了點,但終于跑通了。

這樣就可以把所有指數都繪制到一張圖中,等等,三個甚至多個Y軸怎么加?這又是一個問題,留給愛思考愛學習的你。

有了自己的數據,建立自己的各個指數,然后再放到圖形界面中,同時針對異常情況再自動進行提醒,比如要抄底了,要賣出了,用程序做出自己的晴雨表。

當前標題:python繪圖的函數 python 函數畫圖
網頁路徑:http://m.kartarina.com/article12/hgscdc.html

成都網站建設公司_創新互聯,為您提供網站建設網站內鏈面包屑導航手機網站建設企業建站小程序開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網頁設計公司
主站蜘蛛池模板: 精品一区二区三区无码免费直播| 久久久无码一区二区三区| 久久精品无码一区二区日韩AV| 2020无码专区人妻系列日韩| 韩国19禁无遮挡啪啪无码网站| 国产AV无码专区亚洲Av| 国产精品亚洲专区无码唯爱网| 午夜不卡久久精品无码免费| 加勒比无码一区二区三区| 亚洲AV无码乱码在线观看富二代 | 亚洲综合一区无码精品| 国产精品无码专区在线播放| 麻豆aⅴ精品无码一区二区| 亚洲AV蜜桃永久无码精品| 亚洲av无码专区在线观看下载| H无码精品3D动漫在线观看| 国产在线拍揄自揄拍无码视频| 久久精品无码一区二区三区| 免费无码国产在线观国内自拍中文字幕 | 免费无码又爽又刺激高潮视频| 亚洲AV蜜桃永久无码精品| 韩国精品一区二区三区无码视频| 无码乱人伦一区二区亚洲一| 潮喷无码正在播放| 午夜亚洲av永久无码精品| 蜜臀AV无码精品人妻色欲| 中文字幕av无码无卡免费| 人妻无码久久一区二区三区免费| 亚洲va中文字幕无码久久不卡 | 中文字幕久无码免费久久| 国产精品无码亚洲一区二区三区| AV无码免费永久在线观看| 四虎成人精品无码| 无码八A片人妻少妇久久| 999久久久无码国产精品| 在线观看成人无码中文av天堂| 免费无码又爽又刺激高潮视频| 日韩精品无码一区二区三区免费| 无码国产精品一区二区免费式芒果 | 精品无码人妻一区二区三区18| 国产莉萝无码AV在线播放|