1. 程式人生 > >Python 使用matplotlib畫圖新增標註、及移動座標軸位置

Python 使用matplotlib畫圖新增標註、及移動座標軸位置

一、實現目標

程式碼例項

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()