matplotlib是數據分析三劍客之一
其中需要理解figure(畫布)、axes(座標系)、axis(座標軸)三個基本概念,畫布就是創建一個畫圖的基本區域,
座標系就是一個畫布中分割爲多個小的畫圖區域,稱爲座標系(例如一個畫布中可以同時放三張圖),
而座標軸就是具體每一個畫圖的小區域的x軸,y軸,z軸了。
以下代碼部分來自公衆號‘數據分析與統計學之美’,號主也是相當的厲害,還經常分享小福利,有需要的可以加他。
導入相關庫
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
# 排除警告信息
import warnings
warnings.filterwarnings("ignore")
# 打印版本信息
display(np.__version__)
display(pd.__version__)
display(mpl.__version__)
# matplotlib畫圖常見參數設置
mpl.rcParams["font.family"] = "SimHei" # 設置字體
mpl.rcParams["axes.unicode_minus"]=False # 用來正常顯示負號
plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標籤
# 嵌入式顯示圖形
%matplotlib inline
畫圖示例
import matplotlib as mpl
import matplotlib.pyplot as plt
x= [i for i in range(20)]
y=[2*i+2 for i in range(20)]
# print(x)
# print(y)
plt.plot(x,y)
plt.show()
在一個畫布中創建兩個座標系裏畫兩張圖,合併爲一張圖
import matplotlib as mpl
import matplotlib.pyplot as plt
figure = plt.figure()
# 獲取每個位置的axes對象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,1)
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
figure.show()
這裏其實可以直接這樣,在一個座標系裏作兩張圖
plt.plot([1,3,5,7],[4,9,6,8])
plt.plot([1,2,4,5],[8,4,6,2])
plt.show()
效果跟上面是一樣的
如圖所示
在一個畫布figure裏面創建兩個座標系axes,分開作兩張圖
figure = plt.figure()
# 獲取每個位置的axes對象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)
該函數的第一個參數代表子圖的總行數,第二個參數代表子圖的總列數,第三個參數代表活躍區域。
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
figure.show()
如圖所示
拋物線繪圖
import matplotlib as mpl
import matplotlib.pyplot as plt
x= [i for i in range(-10,10)]
y=[2*i*i+2 for i in range(-10,10)]
# print(x)
# print(y)
plt.plot(x,y)
plt.show()
也可以這樣
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)#-3,3中間50個點。
y1=2*x+1
y2=x**2
plt.figure(num=3,figsize=(8,5))#下面都是這張figure中的,編號,大小橫軸,和縱軸,函數也可以顯示在同一個圖片中,
plt.plot(x, y2, color='black', linewidth=1.5, linestyle='--') # 風格是虛線,線的的u寬度。顏色。
plt.plot(x, y1, color='red', linewidth=1.5)
plt.show()
#https://blog.csdn.net/abc13526222160/article/details/85264865
正弦函數繪圖
x = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
plt.plot(x, y)
plt.plot(x, y*2)
plt.show()
效果太美
x = np.linspace(0, 2 * np.pi, 50)
ax1 = plt.subplot(2, 2, 1) # (行,列,活躍區)
plt.plot(x, np.sin(x), 'r')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 與 ax1 共享y軸
plt.plot(x, 2 * np.sin(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, np.cos(x), 'b')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 與 ax3 共享y軸
plt.plot(x, 2 * np.cos(x), 'y')
plt.show()
#https://blog.csdn.net/csdnsevenn/article/details/82731538?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.nonecase