中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
第92天:Python Matplotlib 進(jìn)階操作

本章節(jié)主要是 Matplotlib 和 NumPy  實(shí)際操作案例講解,matplotlib 通常與 NumPy 一起使用,提供了一種有效的 MatLab 開(kāi)源替代方案,除此之外,它還可以和其他圖形工具包搭配使用。前提是在現(xiàn)在的環(huán)境中已經(jīng)安裝了 Numpy 模塊,Numpy 安裝詳情請(qǐng)參考第79天:數(shù)據(jù)分析之 Numpy 初步

這一節(jié)將從簡(jiǎn)到繁用實(shí)例講解 matplotlib 和 Numpy 結(jié)合使用的知識(shí)點(diǎn)。

1、折線圖

使用 Numpy的函數(shù) np.arange() 函數(shù)創(chuàng)建 x 軸上的值。將 y 軸上的對(duì)應(yīng)值存儲(chǔ)在另一個(gè)數(shù)組對(duì)象 y 中。這些值使用 matplotlib 軟件包的 pyplot 子模塊的 plot() 函數(shù)繪制。

實(shí)例如下:

# 導(dǎo)入模塊import numpy as npimport matplotlib.pyplot as plt
# 繪制 x 軸數(shù)據(jù)x = np.arange(2,15)y = 3 * x+6
# 給圖形設(shè)置標(biāo)題plt.title('line chart')# 設(shè)置 x 軸和 y 軸的屬性名plt.xlabel("x axis")plt.ylabel("y axis")
# 繪制圖形plt.plot(x,y)
# 顯示圖形plt.show()

以上程序運(yùn)行結(jié)果圖:

注意:作為線性圖的替代,可以通過(guò)向 plot() 函數(shù)添加格式字符串來(lái)顯示離散值,可以使用以下格式化字符,表格如下:

字符描述
'-'實(shí)線樣式
'--'短橫線樣式
'-.'點(diǎn)劃線樣式
':'虛線樣式
'.'點(diǎn)標(biāo)記
','像素標(biāo)記
'o'圓標(biāo)記
'v'倒三角標(biāo)記
'^'正三角標(biāo)記
'<'左三角標(biāo)記
'>'右三角標(biāo)記
'1'下箭頭標(biāo)記
'2'上箭頭標(biāo)記
'3'左箭頭標(biāo)記
'4'右箭頭標(biāo)記
's'正方形標(biāo)記
'p'五邊形標(biāo)記
'*'星形標(biāo)記
'h'六邊形標(biāo)記 1
'H'六邊形標(biāo)記 2
'+'加號(hào)標(biāo)記
'x'X 標(biāo)記
'D'菱形標(biāo)記
'd'窄菱形標(biāo)記
'|'豎直線標(biāo)記
'_'水平線標(biāo)記

圖形顯示顏色縮寫(xiě)簡(jiǎn)寫(xiě)表格如下:

字符顏色
'b'藍(lán)色
'g'綠色
'r'紅色
'c'青/綠色
'm'品紅色
'y'黃色
'k'黑色
'w'白色
'o'橙色

2、散點(diǎn)圖

使用以上兩個(gè)表格表示的簡(jiǎn)化符號(hào)畫(huà)一個(gè)綠色散點(diǎn)圖,散點(diǎn)使用 'o'表示,,具體實(shí)例如下:

# 導(dǎo)入模塊import numpy as npimport matplotlib.pyplot as plt
x = np.arange(2, 15)y = 2 * x + 6plt.title("scatter chart")plt.xlabel("x axis")plt.ylabel("y axis")
# 設(shè)置圖形樣式和顏色plt.plot(x, y, "oc")plt.show()

以上程序運(yùn)行結(jié)果為:

例如繪制一個(gè)倒三角圖形:

# 導(dǎo)入模塊import numpy as npimport matplotlib.pyplot as plt
x = np.arange(2, 15)y = 2 * x + 6plt.title("triangle_scatter chart")plt.xlabel("x axis")plt.ylabel("y axis")
# 設(shè)置圖形樣式和顏色plt.plot(x, y, "^c")plt.show()

顯示結(jié)果如下:

3、正余弦波形圖

正弦波形圖

正弦波形圖的繪制需要用到 Numpy 的數(shù)學(xué)函數(shù) sin() 和 cos(),詳細(xì)的數(shù)學(xué)函數(shù)使用請(qǐng)參考 NumPy 系列文章:第 84 天:NumPy 數(shù)學(xué)函數(shù)

import numpy as npimport matplotlib.pyplot as plt
# 計(jì)算正弦曲線上點(diǎn)的 x 和 y 坐標(biāo)print(np.pi)
# 繪制 x 軸,從 0 開(kāi)始,x = np.arange(0, 3 * np.pi, 0.1)y = np.sin(x)
# 設(shè)置標(biāo)題plt.title("sine wave form")
# 繪制圖形點(diǎn)plt.plot(x, y, 'y')plt.show()

顯示結(jié)果:

余弦波形圖

import numpy as npimport matplotlib.pyplot as plt
# 計(jì)算正弦曲線上點(diǎn)的 x 和 y 坐標(biāo)print(np.pi)
# 繪制 x 軸,從 0 開(kāi)始,x = np.arange(0, 4 * np.pi, 0.1)y = np.cos(x)
# 設(shè)置標(biāo)題plt.title("cosine wave form")
# 繪制圖形點(diǎn)plt.plot(x, y, 'm')plt.show()

正余弦波形圖

在一張圖中顯示出正弦函數(shù)和余弦函數(shù),這里需要使用 subplot 來(lái)建立網(wǎng)格圖,一幅圖中使用兩個(gè)網(wǎng)格,兩個(gè)網(wǎng)格中分別展示正弦函數(shù)和余弦函數(shù);subplot 函數(shù)使用說(shuō)明如下:

matplotlib 中, 一個(gè) Figure 對(duì)象可以包含多個(gè)子圖(Axes), 可以使用 subplot() 快速繪制, 調(diào)用形式如下 :

subplot(numRows, numCols, plotNum)

參數(shù)說(shuō)明:

  • 圖表的整個(gè)繪圖區(qū)域被分成 numRows 行和 numCols 列
  • 然后按照從左到右,從上到下的順序?qū)γ總€(gè)子區(qū)域進(jìn)行編號(hào),左上的子區(qū)域的編號(hào)為1,左下子區(qū)域編號(hào)為3,右上子區(qū)域編號(hào)為2,右下子區(qū)域編號(hào)為 4,當(dāng)然具體的還要看指定網(wǎng)格的行數(shù)和列數(shù)而定。
  • plotNum 參數(shù)指定創(chuàng)建的 Axes 對(duì)象所在的區(qū)域

網(wǎng)格編號(hào)圖如下:

假如 numRows = 2, numCols = 3, 那整個(gè)繪制圖表樣式為 2X3 的圖片區(qū)域, 用坐標(biāo)表示為

(1, 1), (1, 2), (1, 3)(2, 1), (2, 2), (2, 3)

再當(dāng) plotNum = 3 時(shí), 表示的坐標(biāo)為(1, 3), 即第一行第三列的子圖 如果 numRows, numCols 和 plotNum 這三個(gè)數(shù)都小于 10 的話, 可以把它們縮寫(xiě)為一個(gè)整數(shù), 例如 subplot(323) 和 subplot(3,2,3) 是相同的。

subplot 在 plotNum 指定的區(qū)域中創(chuàng)建一個(gè)軸對(duì)象, 如果新創(chuàng)建的軸和之前創(chuàng)建的軸重疊的話,之前的軸將被刪除。

例1:上述網(wǎng)格編號(hào)圖代碼如下

import matplotlib.pyplot as plt
plt.subplot(2,2,1)plt.xticks([]), plt.yticks([])plt.text(0.5,0.5, 'subplot(2,2,1)',ha='center',va='center',size=20,alpha=.5)
plt.subplot(2,2,2)plt.xticks([]),plt.yticks([])plt.text(0.5,0.5, 'subplot(2,2,2)',ha='center',va='center',size=20,alpha=.5)
plt.subplot(2,2,3)plt.xticks([]), plt.yticks([])plt.text(0.5,0.5, 'subplot(2,2,3)',ha='center',va='center',size=20,alpha=.5)
plt.subplot(2,2,4)plt.xticks([]), plt.yticks([])plt.text(0.5,0.5, 'subplot(2,2,4)',ha='center',va='center',size=20,alpha=.5)
plt.show()

例4:

import matplotlib.pyplot as plt
plt.subplot(211) # 第一行的左圖plt.subplot(212) # 第一行的右圖
plt.show()

還可以表示為:

import matplotlib.pyplot as plt
plt.subplot(2,1,1)#設(shè)置 x 和 y 軸上的值plt.xticks([]), plt.yticks([]) # 表示無(wú)顯示值plt.text(0.5,0.5, 'subplot(2,1,1)',ha='center',va='center',size=24,alpha=.5)
plt.subplot(2,1,2)plt.xticks([]), plt.yticks([])plt.text(0.5,0.5, 'subplot(2,1,2)',ha='center',va='center',size=24,alpha=.5)
plt.show()

結(jié)果顯示:

網(wǎng)格圖1:

網(wǎng)格圖2:

所以正余弦函數(shù)波形圖可以表示為:


# 計(jì)算正弦和余弦曲線上的點(diǎn)的 x 和 y 坐標(biāo)x = np.arange(0, 3 * np.pi, 0.1)y_sin = np.sin(x)y_cos = np.cos(x)
# 建立 subplot 網(wǎng)格,高為 2,寬為 1# 激活第一個(gè) subplotplt.subplot(2, 1, 1)# 繪制第一個(gè)圖像plt.plot(x, y_sin)plt.title('Sine')
# 將第二個(gè) subplot 激活,并繪制第二個(gè)圖像plt.subplot(2, 1, 2)plt.plot(x, y_cos)plt.title('Cosine')
# 展示圖像plt.show()

最后圖形展示:

4、直方圖

直方圖也稱條形圖,pyplot 子模塊提供 bar() 函數(shù)來(lái)生成條形圖,下面的實(shí)例是一個(gè)使用 bar() 函數(shù)生成的一個(gè)簡(jiǎn)單的柱狀圖. 實(shí)例如下:

import matplotlib.pyplot as plt
# 設(shè)置 x 的 x 軸和 y 軸數(shù)值x = [5,8,10]y = [12,16,6]
# 設(shè)置 x2 的 x 軸和 y 軸數(shù)值x2 = [6,9,11]y2 = [6,15,7]
# 使用 bar() 函數(shù)設(shè)置條形圖的顏色和對(duì)齊方式plt.bar(x, y,color='y', align='center')plt.bar(x2, y2, color='c', align='center')
# 設(shè)置標(biāo)題plt.title('Bar chart')# 設(shè)置 x 軸和 y 軸的屬性名plt.ylabel('Y axis')plt.xlabel('X axis')
# 展示圖形plt.show()

程序運(yùn)行結(jié)果為:

Matplotlib 結(jié)合 NumPy 使用:

這時(shí)候需要用到 NumPy 中的直方統(tǒng)計(jì)函圖:histogram

histogram(a,bins=10,range=None,weights=None,density=False);

參數(shù)說(shuō)明:

  • a 是待統(tǒng)計(jì)數(shù)據(jù)的數(shù)組;
  • bins指定統(tǒng)計(jì)的區(qū)間個(gè)數(shù);
  • range是一個(gè)長(zhǎng)度為2的元組,表示統(tǒng)計(jì)范圍的最小值和最大值,默認(rèn)值 None,表示范圍由數(shù)據(jù)的范圍決定
  • weights為數(shù)組的每個(gè)元素指定了權(quán)值,histogram()會(huì)對(duì)區(qū)間中數(shù)組所對(duì)應(yīng)的權(quán)值進(jìn)行求和
  • densityTrue 時(shí),返回每個(gè)區(qū)間的概率密度;為 False,返回每個(gè)區(qū)間中元素的個(gè)數(shù)

函數(shù)說(shuō)明:

  • numpy.histogram() 函數(shù)是數(shù)據(jù)的頻率分布的圖形表示。水平尺寸相等的矩形對(duì)應(yīng)于類間隔,稱為 bin,變量 height 對(duì)應(yīng)于頻率。
  • numpy.histogram() 函數(shù)將輸入數(shù)組和 bin 作為兩個(gè)參數(shù)。bin 數(shù)組中的連續(xù)元素用作每個(gè) bin 的邊界。

例如:

import numpy as np
# 賦值數(shù)組 aa = np.array([22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27])
# 調(diào)用函數(shù)np.histogram(a, bins=[0, 20, 40, 60, 80, 100])hist, bins = np.histogram(a, bins=[0, 20, 40, 60, 80, 100])
# 輸出值print(hist)print(bins)

輸出結(jié)果為:

[3 4 5 2 1][ 0 20 40 60 80 100]

plt()函數(shù)使用:

Matplotlib 可以將直方圖的數(shù)字表示轉(zhuǎn)換為圖形。pyplot 子模塊的 plt() 函數(shù)將包含數(shù)據(jù)和 bin 數(shù)組的數(shù)組作為參數(shù),并轉(zhuǎn)換為直方圖,例如:

import numpy as npimport matplotlib.pyplot as plt
# 賦值數(shù)組 aa = np.array([22, 87, 43, 56, 73, 55, 11, 20, 51, 5, 79, 27,100])
# plt() 函數(shù)將數(shù)據(jù)變?yōu)橹狈綀Dplt.hist(a, bins=[0,20,40,60,80,100])plt.title("histogram")# 顯示圖形plt.show()

顯示結(jié)果:

5、曲線圖

例1:一個(gè)簡(jiǎn)單的曲線圖

畫(huà)出一個(gè)簡(jiǎn)單的曲線圖,如下所示:

import matplotlib.pyplot as pltimport numpy as np
n = 256X = np.linspace(-np.pi,np.pi,n,endpoint=True)Y = np.sin(2*X)
plt.plot (X, Y+1, color='blue', alpha=1.00)plt.plot (X, Y-1, color='blue', alpha=1.00)
plt.title('curve_chart1')plt.show()

結(jié)果展示為:

例2:升級(jí)版的曲線圖

import numpy as npimport matplotlib.pyplot as plt
n = 256X = np.linspace(-np.pi,np.pi,n,endpoint=True)Y = np.sin(2*X)
plt.plot (X, Y+1, color='blue', alpha=1.00)plt.fill_between(X, 1, Y+1, color='blue', alpha=.25)
plt.plot (X, Y-1, color='blue', alpha=1.00)
# 設(shè)置線條顏色和填充顏色區(qū)域plt.fill_between(X, -1, Y-1, (Y-1) > -1, color='blue', alpha=.25)plt.fill_between(X, -1, Y-1, (Y-1) < -1, color='red', alpha=.25)
plt.title('curve_chart2')plt.show()

結(jié)果展示為:

總結(jié)

本章節(jié)是 Matplotlib 結(jié)合 NumPy 使用的畫(huà)圖方法,主要介紹了折線圖、正余弦波形圖、方形圖、曲線圖的基本畫(huà)法,同時(shí)也詳細(xì)講述了子圖 subplot的基本使用方法,希望以上知識(shí)點(diǎn)能對(duì)學(xué)習(xí)這一模塊的伙伴們提供更好支撐,若有任何問(wèn)題歡迎在交流群中進(jìn)行交流 :)

參考

https://www.runoob.com/numpy/numpy-matplotlib.html

https://www.runoob.com/w3cnote/matplotlib-tutorial.html

https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py

文中示例代碼:https://github.com/JustDoPython/python-100-day

系列文章

第91天:Python matplotlib introduction

從 0 學(xué)習(xí) Python 0 - 90 大合集總結(jié)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python強(qiáng)大的繪圖模塊matplotlib示例講解!
【數(shù)字的可視化:python畫(huà)圖之散點(diǎn)圖sactter函數(shù)詳解】
python的matplotlib的三角函數(shù)sin和cos的靜態(tài)作圖詳解
三維散點(diǎn)圖
Matplotlib 中文用戶指南 3.1 pyplot 教程
matplotlib pyplot 畫(huà)圖基礎(chǔ)教程
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服