Python——matplotlib中的亂七八糟(一)【註釋,圖例,tick能見度,移動座標軸】

我都是在以移動座標的代碼爲基礎的

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,把標籤背景設置爲紅色,平常可以設爲白色
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章