python中的annotate函數使用

python的annotate函數

annotate函數

該函數的詳細參數可調用內置屬性__doc__查看。

	import matplotlib.pyplot as plt
    # plt.annotate(str, xy=data_point_position, xytext=annotate_position, 
    #              va="center",  ha="center", xycoords="axes fraction", 
    #              textcoords="axes fraction", bbox=annotate_box_type, arrowprops=arrow_style)
    # str是給數據點添加註釋的內容,支持輸入一個字符串
    # xy=是要添加註釋的數據點的位置
    # xytext=是註釋內容的位置
    # bbox=是註釋框的風格和顏色深度,fc越小,註釋框的顏色越深,支持輸入一個字典
    # va="center",  ha="center"表示註釋的坐標以註釋框的正中心為準,而不是註釋框的左下角(v代表垂直方向,h代表水平方向)
    # xycoords和textcoords可以指定數據點的坐標系和註釋內容的坐標系,通常隻需指定xycoords即可,textcoords默認和xycoords相同
    # arrowprops可以指定箭頭的風格支持,輸入一個字典
    # plt.annotate()的詳細參數可用__doc__查看,如:print(plt.annotate.__doc__)

例1:

	import matplotlib.pyplot as plt
    fig = plt.figure(1, facecolor='white')
    fig.clf()
    plt.annotate('a decision node', (0.1, 0.5), (0.5, 0.1), va="center",  ha="center",
                 xycoords="axes fraction", textcoords="axes fraction", 
                 bbox=dict(boxstyle="sawtooth", fc="0.8"), arrowprops=dict(arrowstyle="<-"))
    plt.show()

結果如下:

在這裡插入圖片描述

例2:給註釋和數據點指定不同的坐標系

	import matplotlib.pyplot as plt
    fig = plt.figure(1, facecolor='white')
    fig.clf()
    # 這裡指定數據點的坐標系原點在xy軸的左下角,而註釋的坐標系原點在這個圖像(figure)的左下角
    # 所以才會出現註釋內容下移覆蓋瞭x軸
    plt.annotate('a decision node', (0.1, 0.5), (0.5, 0.1), va="center",  ha="center",
                 xycoords="axes fraction", textcoords="figure fraction", 
                 bbox=dict(boxstyle="sawtooth", fc="0.8"), arrowprops=dict(arrowstyle="<-"))
    plt.show()

結果如下:

在這裡插入圖片描述

可視化annotate()函數解析

函數功能:添加圖形內容細節的指向型註釋文本。

調用簽名:

plt.annotate(string, xy=(np.pi/2, 1.0), xytext=((np.pi/2)+0.15, 1,5), weight="bold", color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
  • string:圖形內容的註釋文本
  • xy:被註釋圖形內容的位置坐標
  • xytext:註釋文本的位置坐標
  • weight:註釋文本的字體粗細風格
  • color:註釋文本的字體顏色
  • arrowprops:指示被註釋內容的箭頭的屬性字典

代碼實現:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05, 10, 1000)
y = np.sin(x)
plt.plot(x, y, ls="-.", lw=2, c="c", label="plot figure")
plt.legend()
plt.annotate("maximum", xy=(np.pi/2, 1.0), xytext=((np.pi/2)+1.0, .8),
             weight="bold", color="b", 
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.show()

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: