我都是在以移動座標的代碼爲基礎的
1.移動座標軸
用Matplotlib繪製的圖表的默認座標軸是在左下角的,那麼怎麼能讓它像數學裏面那種成十字形的呢
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()#創建圖
plt.plot(x,y,linewidth=1)
ax=plt.gca() #創建子圖,改變座標軸的默認顯示方式主要要使用gca()方法
#spines脊樑,也就是四個邊框
#隱藏右邊和上邊的邊框,使之沒有顏色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#默認ax裏面的x軸和y軸
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#移動x軸y軸的位置
ax.spines['bottom'].set_position(('data',1))#0,就是移到0的位置
ax.spines['left'].set_position(('data',0))#0,就是移到0的位置
#所以這個時候的x軸y軸的座標交點就是(0,0)
#position裏只有一個參數,記得是雙括號
plt.show() #顯示圖表
2.註釋的使用
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=2,zorder=1)#藍色的那條線
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
############################ 添加註釋 ###############################################
x0=1
y0=x0*2+1
plt.scatter(x0,y0,s=50,color='r',zorder=2)#以紅色點形式顯示出來
plt.plot([x0,x0],[0,y0],'k--',lw=2.5)#簡寫形式,這是那條虛線,k--是指k是指黑色,--虛線,lw是指線的寬度
#annotate函數顯示註釋,
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
########################################################################################
plt.show()
上面的zorder是順序優先級,zorder大的優先顯示出來,這裏點的zorder大於藍色線的,所以看的是點壓在線的上面,annotate()函數詳細看這裏annotate()詳解
3.圖例的使用
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=1,label='yyyyyyyy')#這裏需要給這個函數設置個label,也就是弄個標籤
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',1))
ax.spines['left'].set_position(('data',0))
############################# 圖例的使用 ##########################
plt.legend() #默認的圖例
#################################################################
plt.show()
4.tick能見度
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=10,zorder=1) #設置優先級
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
################################### 標籤的可見度 #####################
for label in ax.get_xticklabels()+ax.get_yticklabels(): #獲取x,y中所有的標籤
label.set_zorder(2) #z_order設置對象優先級
label.set_fontsize(12) #設置數字大小
label.set_bbox(dict(facecolor='red',edgecolor='white',alpha=0.8))
#facecolor 是指背景色 ,edgecolor是指邊框色,alpha指透明度
########################################################################
plt.show()
爲了增強視覺效果,我吧線條寬度設置爲10,把標籤背景設置爲紅色,平常可以設爲白色