Matplotlib中annotate的簡單用法
用一個箭頭指向要注釋的地方,再寫上一段話的行為,叫做annotate。Matplotlib中提供了相應的函數來實現這個功能。因為要控制的細節會比較多,這裡僅介紹最直接簡單的實現方法。相應的內容大家可以參考
matplotlib.pyplot.annotate - Matplotlib 2.1.1 documentation和
Annotations - Matplotlib 2.1.1 documentation中的相關細節。
寫一個簡單的注釋
首先用annotate實現一個簡單的注釋功能,代碼如下。
from pylab import *annotate(s="Nothing", xytext=(0.8, 0.8),xy=(0.2, 0.2), arrowprops=dict(arrowstyle="->"))#,show()
這是實現annotate的最簡單的版本,大家注意參數的含義。
- s: 注釋的內容,一段文字;
- xytext: 這段文字所處的位置;
- xy: 箭頭指向的位置;
- arrowprops: 通過arrowstyle表明箭頭的風格或種類。
箭頭的種類
我們首先來看一下內置箭頭的種類,如下面圖。可以通過設定arrowstyle來改變箭頭的形狀。
彎曲的箭頭
annotate中最重要的控制,全部由arrowprops這個變數完成,它是一個字典類型,可以控制箭頭的諸多屬性。含義比較明顯的有如下幾個,它們的作用和arrow中相應變數類似。
我們在這裡重要的是介紹另外一個控制箭頭彎曲的參數connectionstyle。它可以取的值如下圖,我們從簡單到複雜來看其效果。
arc3
from pylab import *arcs=[-0.5,0,0.5]suptitle(arc3,fontsize=20)k=0for i in arcs: subplot(1,3,k+1) title(rad=+str(i)) annotate(s=str(i), xy=(0.2, 0.2), xytext=(0.8, 0.8), arrowprops=dict(arrowstyle=->,connectionstyle=arc3,+rad=+str(i))) k+=1show()
angle3
from pylab import *angles=[(-90,0),(-90,0),(0,90),(0,-90)]suptitle(angle3,fontsize=20)k=0for i in angles: subplot(2,2,k+1) title(angleA=+str(i[0])+ angleB=+str(i[1])) annotate(s=, xy=(0.2, 0.2), xytext=(0.8, 0.8), arrowprops=dict(arrowstyle=->,connectionstyle=angle3,+angleA= +str(i[0])+,angleB=+str(i[1]))) k+=1show()
當然如果你想要更複雜的彎曲效果,arc和bar可以實現更複雜的效果。但是大部分問題,通過arc3和angle3就可以得到解決。不過要注意的是,不是所有的箭頭類型都可以隨意彎曲的。fancy
, simple
, 和wedge
三種類型的箭頭只能用arc3和angle3 。
推薦閱讀:
※技術專題—Python黑客【優質內容聚合貼】
※為什麼 Python 不是 lexical scoping?
※python之collection-deque
※pandas 怎麼根據一列的數據的值的情況判斷來生成另外一列的數值?
※為什麼Sublime Text不支持Python交互?
TAG:Matplotlib | Python | 可視化 |