Matplotlib中的arrow

在數據圖中,除了曲線之外,剩下的信息都是圍繞著曲線的特徵去解釋。比方坐標軸,標題,legend等等,可以說都是在解釋曲線。那麼我們經常需要像手寫那樣,畫一個箭頭指向需要說明的位置,然後寫一段話說明這是什麼。那麼這種也叫做注釋,像我們平時記筆記那樣,在Matplotlib中叫annotate。就是一個箭頭加一段文字,原則上完全可以用text和arrow來完成。

但是Matplotlib提供了另外一種更加靈活的方法--annotate。這種方法的優點在於可以實現很多複雜的注釋方法。我們這裡只介紹最基本的方式。由於涉及到箭頭的形狀,那麼我們先從arrow開始介紹。

arrow函數的使用方法

這裡提供一個官方的說明,最簡單的方式如介面所示。

這裡面每一個參數的含義都很明確。下面這段代碼我們利用arrow產生一個箭頭。

from pylab import *from numpy import *arrow(1,1,4,0)xlim(0,6)ylim(0,2)show()

這是未加任何修改得到的結果,當然不是我們想要的,因為看不到箭頭。所以我們來看如何逐漸讓箭頭顯現出來。

讓箭頭變長

from pylab import *from numpy import *arrow(1,1.5,4,0,color=r)arrow(1,1,4,0,head_length=0.8)xlim(0,6)ylim(0,2)show()

注意代碼,實際上我只是把原來的箭頭重新用紅色畫了一遍,然後第二個箭頭加了一個參數,head_length。那麼結果大家已經看到了,黑色的比紅色的長。這就是head_length起到的作用。在默認情況下,我們單獨調整箭頭head的長度的話,實際上會比原來指定的箭頭總長要長,也就是單獨變化。在參數中,length_includes_head控制是否在調整箭頭頭部長度的時候,保持原長。因此可以修改該變數,達到想要的效果。

讓箭頭變寬

既然變長達不到效果,我們可以讓箭頭變得更寬一些。那麼實現方法類似,利用head_width如下

from pylab import *from numpy import *arrow(1,1,4,0,head_width=0.2)xlim(0,6)ylim(0,2)show()

效果不言而喻,就不再多討論了。

讓箭頭出現一半

我們可以指定箭頭出現在上半邊,下半邊,還是完整出現。用shape來控制。下面代碼分別給出shape為left的結果。

from pylab import *from numpy import *arrow(1,1,4,0,head_width=0.2,shape=left)xlim(0,6)ylim(0,2)show()

修改箭頭的顏色

我們想讓箭頭的顏色發生變化,可以分別用fcec兩個參數控制。注意這兩個參數控制哪些部分的色彩。

from pylab import *from numpy import *arrow(1,1,4,0,head_width=0.2,fc=b,ec=r)xlim(0,6)ylim(0,2)show()

修改線的粗細和風格

這部分內容用linestyle和linewidth控制,和plot函數中一致,不再具體說明。

如果要修改箭頭的風格,那麼比較容易的方式是在annotate中實現,在下一篇文章中詳細說明。


推薦閱讀:

如何用Python和R對《權力的遊戲》故事情節做情緒分析?
符斗祭的背後(一):自動更新機制的演進
NumPy和MATLAB哪個強大,Numpy能替代MATLAB嗎?

TAG:Matplotlib | Python | 科學計算 |