matplotlib學習筆記
- 導入matplotlib庫
- 使用matplotlib建立圖像
- figure的使用
-
- 使用figure語句建立多個視窗
- 在同一個figure視窗中繪制多條圖像
- 修改坐标軸
-
- 限定坐标軸範圍
- 添加坐标軸的說明
- 替換坐标軸上點的名稱
- 修改坐标軸的位置
- 取消坐标軸
- 修改坐标軸的位置
- 添加legend圖例
- 繪制散點圖
-
- 繪制簡單的散點圖
- 繪制散點圖矩陣
- 繪制柱狀圖
導入matplotlib庫
使用
import matplotlib.pyplot as plt
導入matplotlib庫
使用matplotlib建立圖像
使用matplotlib繪制出y=x*2+5在(0,50)上的圖像
x=np.array([i for i in range(50)])
y=x*2+5
plt.plot(x,y)
plt.show()
得到圖像
figure的使用
使用figure語句建立多個視窗
使用plt.figure()語句可以在多個視窗中繪制出各個圖像
在不同的plt.figure()語句下使用plt.plot()語句即可在多個視窗中繪制出各個圖像
y1=x*2+5
y2=x**10+3*x
plt.figure(num=1)
plt.plot(x,y1)
plt.figure(num=2)
plt.plot(x,y2)
plt.show()
pli.figure()中可填寫num 代表figure視窗的号碼
得到圖像
在同一個figure視窗中繪制多條圖像
将多個pli.plot()寫在同一個plt.figure()語句下即可在同一個figure視窗中繪制多個圖像
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.show()
其中plt.plot(x,y,color,linewidth,linestyle)中對應線條的顔色、寬度、樣式
其中樣式可以選擇
‘-’, ‘–’, ‘-.’, ‘:’, ‘None’, ’ ', ‘’, ‘solid’, ‘dashed’, ‘dashdot’, ‘dotted’
得到圖像
修改坐标軸
限定坐标軸範圍
使用plt.xlim() 和 ply.ylim()語句來限定x和y軸的範圍
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.xlim((4,50))
plt.ylim((1,50))
plt.show()
得到圖像
添加坐标軸的說明
使用plt.xlabel()與plt.ylabel()語句來添加x和y軸的說明
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.xlim((4,50))
plt.ylim((1,50))
plt.xlabel('x line')
plt.ylabel('y line')
plt.show()
替換坐标軸上點的名稱
使用plt.xticks()和plt.yticks()語句修改坐标軸上的名稱
括号中可以使用np.linspace()語句進行替換 同時也可以使用二維數組進行替換
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.xlim((4,50))
plt.ylim((1,50))
plt.xlabel('x line')
plt.ylabel('y line')
line=np.linspace(5,50,10)
plt.xticks(line)
plt.yticks([5,10,20,40,50],
['one','two','three','four','five'])
plt.show()
得到圖像
修改坐标軸的位置
使用到plt.gca()語句
取消坐标軸
使用ax.spines[].set_color(‘none’)語句可以使坐标軸消失
其中中括号中的參數為’top’,‘bottom’,‘left’,'right’分别對應上下左右
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.xlim((4,50))
plt.ylim((1,50))
plt.xlabel('x line')
plt.ylabel('y line')
line=np.linspace(5,50,10)
plt.xticks(line)
plt.yticks([5,10,20,40,50],
['one','two','three','four','five'])
ax=plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
plt.show()
得到圖像
修改坐标軸的位置
首先使用ax.axis.set_ticks_position()語句取消坐标軸目前位置
其中括号中的參數為’top’, ‘bottom’, ‘both’, ‘default’, ‘none’
然後使用ax.spines[].set_position()語句更改坐标軸位置
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.')
plt.xlim((4,50))
plt.ylim((1,50))
plt.xlabel('x line')
plt.ylabel('y line')
line=np.linspace(5,50,10)
plt.xticks(line)
plt.yticks([5,10,20,40,50],
['one','two','three','four','five'])
ax=plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.xaxis.set_ticks_position('both')
ax.yaxis.set_ticks_position('both')
ax.spines['left'].set_position(('data',5))
ax.spines['bottom'].set_position(('data',10))
plt.show()
得到圖像
添加legend圖例
在plt.plot()語句中添加label語句 添加圖例名稱
使用plt.legend()語句生成圖例
x=np.array([i for i in range(50)])
y1=x*2+5
y2=x**10+3*x
plt.figure()
plt.plot(x,y1,label='first')
plt.plot(x,y2,color='green',linewidth=2.0,linestyle='-.',label='second')
plt.xlim((4,50))
plt.ylim((1,50))
plt.xlabel('x line')
plt.ylabel('y line')
line=np.linspace(5,50,10)
plt.xticks(line)
plt.yticks([5,10,20,40,50],
['one','two','three','four','five'])
ax=plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.xaxis.set_ticks_position('both')
ax.yaxis.set_ticks_position('both')
ax.spines['left'].set_position(('data',5))
ax.spines['bottom'].set_position(('data',10))
plt.legend()
plt.show()
得到圖像
繪制散點圖
繪制簡單的散點圖
使用plt.scatter()語句繪制散點圖
x=np.array([i for i in range(50)])
y=x*2+5
plt.scatter(x,y)
plt.show()
得到散點圖
繪制散點圖矩陣
同樣使用plt.scatter()語句
n=1000
X=np.random.normal(0,1,n)
Y=np.random.normal(0,1,n)
plt.scatter(X,Y,s=50,alpha=0.5)
plt.show()
得到圖像
繪制柱狀圖
使用plt.bar()語句繪制柱狀圖
n=10
X=np.arange(n)
X1=np.random.uniform(1,10,n)
Y1=np.random.uniform(1,10,n)
plt.bar(X,Y1)
plt.show()
得到圖像