我終於懂得如何使用matplotlib進行畫圖


摘自:https://www.cnblogs.com/zszxz/p/12149330.html

一 前言

本篇文章帶大家快速入門如何使用matplotlib畫出精美數學的圖片;看完本篇文章你將獲得熟悉並簡單使用matplotlib工具,會畫基本得折現圖,散點圖,sin,cos圖,一張畫布畫出多圖等. 當然matplotlib得功能遠不止這些,讀者可以參照官網進行學習。

二 圖像得組成

下面張圖片來自matplotlib官網,簡單說明一下圖片得組成;

  1. figure:畫布,一張圖片得整體輪廓
  2. Axes:數軸,一張畫布上可以畫多張圖片
  3. axis:坐標軸,通常得x軸,y軸等
  4. tick:刻度,坐標軸上得刻度
  5. title: 圖片得標題
  6. legend:圖例
  7. grid: 網格
  8. 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()

 
分類:  python


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM