1. 程式人生 > >機器學習精簡教程之四——用matplotlib繪製精美的圖表

機器學習精簡教程之四——用matplotlib繪製精美的圖表

本文轉自: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()