iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
AI & Data

實實在在地學習人工智慧-基礎理論探討與經典案例實作系列 第 11

【Day 11】開始寫程式拉!第三站:重要函式庫-Matplotlib

  • 分享至 

  • xImage
  •  

今天會開始介紹在做人工智慧時,常使用到的函式庫,這一部分會多介紹一些,因為在資料分析時是相當重要的工具,所以接下來會一天介紹一個函式庫,直接把它學起來!
https://ithelp.ithome.com.tw/upload/images/20190926/201210498EVHIiBiFh.jpg
圖片來源

Matplotlib介紹

簡單來說Matpotlib是一個強大python繪圖工具,也就是它可以將資料視覺化,資料視覺化是相當重要的,當我們在查看訓練資料時,可以利用它來視覺化資料,使我們比較好觀察資料的走向或者相關度。
Matpotlib有兩個重要的模組:
1.Pylab:Matlab的python版本。
2.Pyplot:呼叫NumPy的函式來做計算,再以圖形方式呈現。

Matplotlib程式相關介紹

先導入要用的函式庫numpy和用numpy計算的並繪圖的matplotlib.pyplot

import matplotlib.pyplot as plt
import numpy as np

開始操作matplotlib

1.基本直線

x = np.linspace(-10, 10,50) #np.linspace(開始,結束,樣本數)
y = 2*x + 10

plt.plot(x, y) #畫出(x,y)的曲線
plt.show() #顯示圖

輸出:
https://ithelp.ithome.com.tw/upload/images/20190926/20121049dxzADaMZXs.jpg
2.加入第二條線(同時改變第二條顏色、寬度、樣貌,是可以自己選其他樣子的)

x = np.linspace(-10, 10,50) #np.linspace(開始,結束,樣本數)
y1 = 2*x + 10
y2 = x**2

plt.plot(x, y1)
plt.plot(x, y2, color='black', linewidth=4.0, linestyle='--')#color顏色、linewidth寬度、linestyle線的樣子
plt.show()

輸出:
https://ithelp.ithome.com.tw/upload/images/20190926/20121049H4PW1nQWVR.jpg
3.資訊標示

#plt.xlabel plt.tilte plt.legned
x = np.linspace(-4, 4,50) #np.linspace(開始,結束,樣本數)
ysin = np.sin(x) #製作sin波形
ycos = np.cos(x) #製作cos波形

plt.plot(x,ysin)
plt.plot(x,ycos)

plt.xlabel('x') #x軸名稱
plt.ylabel('y') #y軸名稱
plt.title('title') #標題
plt.legend(['sin','cos']) #左下角的圖示

輸出:
https://ithelp.ithome.com.tw/upload/images/20190926/20121049GZhqTnOF5C.jpg
4.XY軸自己定義

x = np.arange(0, 2* np.pi,0.1) #每次+0.1,上下限0~6.28 
new_ticks = np.linspace(0,10,11) #從0數到10,總共有11個樣本

y = np.sin(x) 
plt.xticks(new_ticks) #代表重新定義x座標"刻度"

plt.yticks([-1,-0.5,0,0.5,1],[r'really bad',r'bad',r'normal',r'good',r'very good']) #重新定義y做鏢刻度,在對應的點上刻上文字
plt.plot(x,y)

輸出:
https://ithelp.ithome.com.tw/upload/images/20190926/20121049Vqq3iJNo7T.jpg
5.繪製多個子圖subplot

#subplot
x = np.linspace(-10, 10,50) #np.linspace(開始,結束,樣本數)
y2 = 2*x + 10
ysin = np.sin(x)
ycos = np.cos(x)
#subplot(numRows, numCols, plotNum),numRows是圖表被分的列數;numCols是被分的行數

plt.subplot(2,2,1) #將原本的大區塊分成2*2等分,其中左上為1
plt.plot(x,ysin)
plt.title('sin')

plt.subplot(2,2,2) #右上為二
plt.plot(x,y2)
plt.title('y2')

plt.subplot(2,2,3) #左下為三
plt.plot(x,ycos)
plt.title('cos')

plt.show()

輸出:
https://ithelp.ithome.com.tw/upload/images/20190926/20121049ouQNk1MlQN.jpg
6.畫圖(柱狀圖、圓餅圖)
柱狀圖:

import matplotlib.pyplot as plt

price = [500000,300000,430000,150000] #資料
plt.ylabel('價格') #y座標名稱
plt.title('JOHN國各區域每坪價格') # 新增標題
plt.xticks(range(4),['北區','中區','南區','東區']) # 自定義刻度標籤
plt.ylim([100000,700000]) # 設定Y軸的刻度範圍(下限100000,上限700000)

plt.bar(range(4), price, 0.4,color='r', alpha = 0.8)#1.x軸4個值2.y軸的數值3.柱子大小(預設是1)4.顏色
for x,y in zip(range(4),price): #用zip才可以把他們包起來,同時跌代
    plt.text(x,y+10000,'%s' %y,ha='center') 
# 顯示圖形
plt.show()

輸出:
https://ithelp.ithome.com.tw/upload/images/20190927/201210491IBSwdQsxu.jpg
圓餅圖:

labels = ["北區","中區","南區","東區"]
price = [500000,300000,430000,150000]
explode_p = (0.1, 0, 0, 0) #讓北區浮出0.1
plt.pie(price , labels = labels,explode = explode_p ,autopct='%1.1f%%') #1.數值2.名稱標示3.讓想要浮出的那塊浮起4.標示數值比例,並設定想要的位數
plt.axis('equal') #讓X軸、Y軸距有相同長度,讓它變成正圓
plt.show()

輸出:
https://ithelp.ithome.com.tw/upload/images/20190927/20121049RLlKMtplj9.jpg

明天會接著介紹pandas,也是個好用的函式庫,明天要記得回來哦!加油加油!


上一篇
【Day 10】開始寫程式拉!第二站:Python基礎介紹(2/2)
下一篇
【Day 12】開始寫程式拉!第三站:重要函式庫-Pandas (1/2)
系列文
實實在在地學習人工智慧-基礎理論探討與經典案例實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言