一 前言
本篇文章帶大家快速入門如何使用matplotlib畫出精美數學的圖片;看完本篇文章你將獲得熟悉並簡單使用matplotlib工具,會畫基本得折現圖,散點圖,sin,cos圖,一張畫布畫出多圖等. 當然matplotlib得功能遠不止這些,讀者可以參照官網進行學習。
二 圖像得組成
下面張圖片來自matplotlib官網,簡單說明一下圖片得組成;
- figure:畫布,一張圖片得整體輪廓
- Axes:數軸,一張畫布上可以畫多張圖片
- axis:坐標軸,通常得x軸,y軸等
- tick:刻度,坐標軸上得刻度
- title: 圖片得標題
- legend:圖例
- grid: 網格
- label:標簽說明
三 畫折現圖
畫圖之前要導入matplotlib庫和numpy庫;
3.1 簡單折線圖
畫一張簡單得折線圖,輸入得數值只有y變量,並且設置x,y軸得標簽和字體大小,詳細說明看代碼清單
import matplotlib.pyplot as plot
import numpy as np
# 着線圖數據
line = [1,2,6,8,9,15,23,29,35]
# 指定線條粗細
plot.plot(line,linewidth=2)
# 設置標題
plot.title("zszxz line ",fontsize=12)
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y",fontsize=12)
# 顯示
plot.show()
圖片顯示結果
3.2 齊全的折線圖
下面得圖片畫得是帶有x,y數值得折現圖,能夠自定義x,y值,實現數學上的數字換圖片效果; 描繪坐標就是(1,2),(2,4),(6,12),(8,16),(9,18);y的值正好是x的2倍(y = 2x);也可以發現與前面一張圖片的不同之處就是初始值不是(0,0)開始,而是(1,2);
import matplotlib.pyplot as plot
import numpy as np
# 着線圖數據
line1 = [1,2,6,8,9]
line2 = [2,4,12,16,18]
# 指定線條粗細
plot.plot(line1, line2,linewidth=2)
# 設置標題
plot.title("zszxz line ",fontsize=12)
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y",fontsize=12)
# 顯示
plot.show()
圖片結果
3.3 銷售折現圖
模擬一次水果每個月份的銷量,知識追尋者舉例2個水果,分別是蘋果,香蕉,然后用折現圖顯示每個月份的銷量;代碼清單將設置圖例信息,限制x軸的范圍(1~12月),設置x軸刻度;
import matplotlib.pyplot as plot
import numpy as np
# 折線圖數據
line1 = [1,2,6,8,9,25,41,65,32,14,45,100]
line2 = [2,4,12,16,18,45,3,4,55,67,78,22]
# 線條1
plot.plot(line1,color='red',label="apple",linewidth=2)
# 線條2
plot.plot(line2,color='blue',label="banana",linewidth=2)
# 設置x軸
plot.xlabel("month",fontsize=12)
# 設置y軸
plot.ylabel("sales",fontsize=12)
# 設置標題
plot.title("zszxz prodcut sale ",fontsize=12)
# 添加圖例
plot.legend()
# 設置x范圍
plot.xlim(1,12)
# 設置 x 刻度
x_ticks = np.arange(1, 13, 1)
plot.xticks(x_ticks)
# 顯示
plot.show()
執行結果
四 畫散點圖
4.1 簡單的散點圖
我們將以簡單的(x,y)坐標匹配,然后在畫布上畫出簡單的散點圖;
import matplotlib.pyplot as plot
import numpy as np
x = [1,3,5,7,9]
y = [2,4,6,8,10]
# 散點
plot.scatter(x,y)
# 設置標題
plot.title("zszxz scatter",fontsize=12)
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y",fontsize=12)
# 顯示
plot.show()
執行結果如下,可以看見基本實現了散點圖功能不過不是很好看;
4.2 計算型散點圖
實際應用中不可能要我們手動輸入2個列表進行描繪散點圖,一般都包含一種數學關系,我們用計算的方式獲得散點圖;
import matplotlib.pyplot as plot
import numpy as np
x_val = list(range(1,50))
# y的值是x的平方
y_val = [x**2 for x in x_val]
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y",fontsize=12)
# 散點
plot.scatter(x_val,y_val,color='pink')
# 顯示
plot.show()
執行結果如下,修改顏色,數據集變多之后,明顯就好看了許多;
4.3 隨機數散點圖
這次我們將使用隨機數進行描繪圖片,並設置圖片散點顏色,標記屬性;marker 屬性默認是 o ,圓點,我們將其改成 * ; 更多marker配置配置可以參照官方文檔
import matplotlib.pyplot as plot
import numpy as np
# 500 個隨機數
n = 500
# 平均值為0,方差為1
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
#plot.scatter(X,Y,color='green',alpha=0.7)
plot.scatter(X,Y,color='green',alpha=0.7,marker='*')
#設置網格線
#plot.grid(True)
plot.show()
執行結果如下,可以發現瞬間美觀了許多,當然根據不同的實際需求,畫出的圖片也不一樣。
五 畫正余弦
5.1正弦
知識追尋者將畫 一個 x 軸從-2Π 到 + 2 Π的 正弦圖,並且在區間進行1024個等分處理;
import matplotlib.pyplot as plot
import numpy as np
# -2Π 到 2 Π 1024 個等值
x = np.linspace(-np.pi*2, np.pi*2, 1024)
y = np.sin(x)
plot.plot(x, y,c='r')
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y=sin(x)",fontsize=12)
# 設置標題
plot.title("zszxz sin",fontsize=12)
# 顯示
plot.show()
執行結果如下:
5.2 余弦
跟正弦類似,畫 一個 x 軸從-2Π 到 + 2 Π的 正弦圖,並且在區間進行1024個等分處理;
import matplotlib.pyplot as plot
import numpy as np
# -2Π 到 2 Π 1024 個等值
x = np.linspace(-np.pi*2, np.pi*2, 1024)
y = np.cos(x)
plot.plot(x, y,c='c')
# 設置x軸
plot.xlabel("x",fontsize=12)
# 設置y軸
plot.ylabel("y=cons(x)",fontsize=12)
# 設置標題
plot.title("zszxz cos",fontsize=12)
# 顯示
plot.show()
六 畫布多圖
知識追尋者將5章節的正弦,余弦整合,然后在一張畫布上畫出2張圖片;懂得這個方法之后,讀者可以在任意得一張畫布上畫出多張圖片;為了顯示更加好看,還設置了虛線(dashes)
import matplotlib.pyplot as plot
import numpy as np
# 創建畫布
plot.figure()
# 子圖1
plot.subplot(211)
x = np.linspace(-np.pi*2, np.pi*2, 1024)
sin_y = np.sin(x)
# 設置虛線
plot.plot(x, sin_y,dashes=[6, 3],c='m')
# 子圖2
plot.subplot(212)
con_y = np.cos(x)
plot.plot(x, con_y,dashes=[6, 2],c='r')
# 顯示
plot.show()