標注常用函數及其作用
1、plt.annotate()
plt.annotate( s, xy, *args, **kwargs)
其中常用的參數有:
1、s:代表標注的內容
2、xy:需要被標注的坐標,通過xycoords設置偏移方式
3、xytext:標注的文字的坐標,通過textcoords設置偏移方式
4、xycoords:用於設置xy的偏移方式

5、textcoords:用於設置xytext的偏移方式
6、color:設置字體顏色
{‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, ‘w’}
‘black’,'red’等 [0,1]之間的浮點型數據
RGB或者RGBA, 如: (0.1, 0.2, 0.5)、(0.1, 0.2, 0.5, 0.3)等7
7、arrowprops:箭頭參數,參數類型為字典dict

width:箭頭的寬度,以點為單位
headwidth:箭頭底部的寬度,以點為單位
headlength:箭頭的長度,以點為單位
shrink:從兩端“收縮”的分數
facecolor:箭頭顏色
arrowstyle:箭頭的樣式
connectionstyle:用於設置連接方式,可以設置弧度等
可以用字符串代表一個箭頭的樣式,用於arrowstyle。

接下來我將舉例說明,如何利用annotate函數實現一個點的標注。
plt.annotate('2x+1=y',
xy=(x0,y0),
xycoords='data',
xytext = (+30,-30),
textcoords = 'offset points',
fontsize = 16,
arrowprops=dict(arrowstyle = '->',
connectionstyle = 'arc3,rad=0.2')
)
其中:
(x0,y0)代表被標注的坐標;
xycoords = ‘data’代表使用被注釋對象(參數為xy)的坐標系統;
xytext =(+30,-30)代表相對xy右偏移30單位,下偏移30單位;
textcoords = 'offset points’代表以點為單位;
fontsize = 16代表字體大小;
arrowprops=dict(arrowstyle = ‘->’,connectionstyle = ‘arc3,rad=0.2’)代表使用樣式為’->'的箭頭,並具有一定的連接弧度。

2、plt.text()
plt.text( x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)
1、x,y:代表標記所處的坐標值
2、s:代表標記的文字
3、fontsize:代表字體大小
4、verticalalignment:垂直對齊方式 ,可以選擇(‘center’ , ‘top’ , ‘bottom’ , ‘baseline’ )
5、horizontalalignment:水平對齊方式 ,可以選擇( ‘center’ , ‘right’ , ‘left’ )
6、xycoords:選擇指定的坐標軸系統,與annotate函數類似
7、arrowprops:增加箭頭,與annotate函數類似
width:箭頭的寬度,以點為單位
headwidth:箭頭底部的寬度,以點為單位
headlength:箭頭的長度,以點為單位
shrink:從兩端“收縮”的分數
facecolor:箭頭顏色
arrowstyle:箭頭的樣式
connectionstyle:用於設置連接方式,可以設置弧度等
可以用字符串代表一個箭頭的樣式,用於arrowstyle。在這里插入圖片描述

8、bbox:增加邊框樣式
boxstyle:方框外形;
facecolor:背景顏色;
edgecolor:邊框線條顏色;
edgewidth:邊框線條大小。
接下來我將舉例說明,如何使用text函數
plt.text(0.5,-1,'This is a text',fontdict = {'size':12,'color':'green'})
其中:
- 0.5,-1代表被text所處的坐標;
- 'This is a text’代表標注的內容;
- fontdict = {‘size’:12,‘color’:‘green’}代表設置字號為12,顏色為綠色
應用示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)
y1 = 2*x + 1
plt.xlim((-1,1))
plt.ylim((-2,5))
plt.xlabel('I am x label')
plt.ylabel('I am y label')
newTicks = np.linspace(-1,1,11)
plt.xticks(newTicks)
# y軸字體差別,設置成斜體
plt.yticks([-2,-1.0,0,1.5,3],
[r'$really\ bad$',r'$little\ bad$',r'$normal$',r'$little\ good$',r'$pretty\ good$'])
plt.plot(x,y1)
# 獲得當前的axis
ax = plt.gca()
# 設置圖像的上邊、右邊axis為無色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 設置x軸坐標在下部
ax.xaxis.set_ticks_position('bottom')
# 設置x軸位於圖像y=0處
ax.spines['bottom'].set_position(('data', 0))
# 設置x軸坐標在左部
ax.yaxis.set_ticks_position('left')
# 設置y軸位於圖像x=0處
ax.spines['left'].set_position(('data',0))
x0 = 0.5
y0 = x0*2+1
plt.scatter(x0,y0,s = 50,color = 'green')
plt.plot([x0,x0],[y0,0],'--',color = 'black')
plt.annotate('2x+1=y',xy=(x0,y0),xycoords='data',xytext = (+30,-30),textcoords = 'offset points',
fontsize = 16,arrowprops=dict(arrowstyle = '->',connectionstyle = 'arc3,rad=0.2'))
plt.text(0.5,-1,'This is a text',fontdict = {'size':12,'color':'green'})
plt.show()


