機器學習精簡教程之四——用matplotlib繪製精美的圖表
阿新 • • 發佈:2019-01-02
本文轉自:http://www.shareditor.com/blogshow/?blogId=55
繪製一元函式影象y=ax+b
import matplotlib.pyplot as plt import numpy as np plt.figure() # 例項化作圖變數 plt.title('single variable') # 影象標題 plt.xlabel('x') # x軸文字 plt.ylabel('y') # y軸文字 plt.axis([0, 5, 0, 10]) # x軸範圍0-5,y軸範圍0-10 plt.grid(True) # 是否繪製網格線 xx = np.linspace(0, 5, 10) # 在0-5之間生成10個點的向量 plt.plot(xx, 2*xx, 'g-') # 繪製y=2x影象,顏色green,形式為線條 plt.show() # 展示影象
繪製正弦曲線y=sin(x)
import matplotlib.pyplot as plt import numpy as np plt.figure() # 例項化作圖變數 plt.title('single variable') # 影象標題 plt.xlabel('x') # x軸文字 plt.ylabel('y') # y軸文字 plt.axis([-12, 12, -1, 1]) # x軸範圍-12到12,y軸範圍-1到1 plt.grid(True) # 是否繪製網格線 xx = np.linspace(-12, 12, 1000) # 在-12到12之間生成1000個點的向量 plt.plot(xx, np.sin(xx), 'g-', label="$sin(x)$") # 繪製y=sin(x)影象,顏色green,形式為線條 plt.plot(xx, np.cos(xx), 'r--', label="$cos(x)$") # 繪製y=cos(x)影象,顏色red,形式為虛線 plt.legend() # 繪製圖例 plt.show() # 展示影象
繪製多軸圖
import matplotlib.pyplot as plt import numpy as np def draw(plt): plt.axis([-12,12,-1,1])#x軸和y軸的範圍 plt.grid(True)#是否繪製網格線 xx = np.linspace(-12,12,1000)#在-12到12之間生成1000個點的向量 plt.plot(xx,np.sin(xx),'g-',label="&sin(x)$")#繪製y=sin(x)影象,顏色green,形式為線條 plt.plot(xx,np.cos(xx),'r--',label="&cos(x)$")#繪製y=cos(x)影象,顏色為red,形式為虛線 plt.legend()#繪製圖例 plt.figure()#例項化作圖變數 plt1 = plt.subplot(2,2,1)#兩行兩列中的第1張圖 draw(plt1) plt2 = plt.subplot(2,2,2)#兩行兩列中的第2張圖 draw(plt2) plt3 = plt.subplot(2,2,3)#兩行兩列中的第3張圖 draw(plt3) plt4 = plt.subplot(2,2,4)#兩行兩列中的第4張圖 draw(plt4) plt.show()#得將畫好的圖顯示出來啊
繪製3D影象
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 500) # theta旋轉角從-4pi到4pi,相當於兩圈
z = np.linspace(0, 2, 500) # z軸從下到上,從-2到2之間畫100個點
r = z # 半徑設定為z大小
x = r * np.sin(theta) # x和y畫圓
y = r * np.cos(theta) # x和y畫圓
ax.plot(x, y, z, label='curve')
ax.legend()
plt.show()
3D散點圖
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')
xx = np.linspace(0,5,10)
yy = np.linspace(0,5,10)
zz1 = xx
zz2 = 2 *xx
zz3 = 3*xx
ax.scatter(xx,yy,zz1,c='red',marker='o')#o型符號
ax.scatter(xx,yy,zz2,c='green',marker='^')#三角型符號
ax.scatter(xx,yy,zz3,c='black',marker='*')#星型符號
ax.legend()
plt.show()
繪製3D表面
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
Z = X**2+Y**2
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
plt.show()