Python 使用matplotlib畫圖新增標註、及移動座標軸位置
阿新 • • 發佈:2018-12-31
一、實現目標
程式碼例項
import matplotlib.pyplot as plt import matplotlib import numpy as np #解決中文亂碼問題,引入windows字型庫 myfont = matplotlib.font_manager.FontProperties(fname=r'C:/Windows/Fonts/msyh.ttf') x = np.linspace(-3,3,50) y = 2*x + 1 plt.plot(x,y) plt.figure(1,figsize=(8,5)) xticks = np.linspace(-3,3,11) #plt.xticks(xticks) 設定座標點 #yticks = np.linspace(-6,8,14) #plt.yticks(yticks) plt.xlabel("x") plt.ylabel("y") #挪動座標位置 ax = plt.gca() #去掉邊框 ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') #移位置 設為原點相交 ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) ''' 然後標註出點(x0, y0)的位置資訊. 用plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=1.0) 畫出一條垂直於x軸的虛線 ''' x0 = 1 y0 = 2*x0 + 1 plt.plot([x0,x0,],[0,y0],'k--',linewidth=2.5) # set dot styles plt.scatter([x0, ], [y0, ], s=50, color='r') #在這點加個藍色的原點 原點大小50 plt.title(u'Annotation 標註',fontproperties=myfont) #標註方式1: 使用 annotate 接下來我們就對(x0, y0)這個點進行標註. ''' 其中引數xycoords='data' 是說基於資料的值來選位置, xytext=(+30, -30) 和 textcoords='offset points' 對於標註位置的描述 和 xy 偏差值, arrowprops是對圖中箭頭型別的一些設定. ''' 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=.2")) ''' 標註方式2: 使用 text 其中-3.7, 3,是選取text的位置, 空格需要用到轉字元\ ,fontdict設定文字字型. ''' plt.text(-3.7, 3, r'$.Annotation text 、 \mu\ \sigma_i\ \alpha_t$', fontdict={'size': 16, 'color': 'r'}) plt.show()