Python+matplotlib自定義坐標軸位置、顏色、箭頭

使用Python+numpy+matplotlib這樣的組合,如果要繪製一條正弦曲線,是很容易的事。例如下面的程式碼:

繪製結果為:

雖然確實幾行程式碼就畫出了正弦曲線,但是這個圖也太樸素了,如果我們想得到下面這樣的結果,該如何實現呢?

上面圖形中的難點在於坐標軸的箭頭,可以使用axisartist來輔助實現,參考程式碼:

雖然這個axisartist能夠很方便地自定義坐標軸的位置和完美地設置箭頭,但對於更多屬性的設置有點乏力,很多參數的微調還是很花費時間的,在上面程式碼中添加程式碼修改坐標軸顏色,效果並不是很理想。例如,

繪製結果如下:

也可以考慮隱藏原有的坐標軸直線,使用arrow來繪製帶箭頭的直線來代替,就是箭頭有點丑,調整參數也比較麻煩,例如下面的程式碼:

結果如圖所示:

如果實現下面的圖形,上面幾種方法還是有些吃力的:

分析圖形中的細節可知,主要是坐標軸的屬性,有:1)只顯示兩根軸線;2)兩根軸線顏色不同;3)軸線寬度比默認值粗;4)坐標軸的刻度顏色與默認值不同;5)軸線的一端有表示方向的箭頭。

這些屬性都可以通過軸域的坐標軸方法來修改,再藉助於annotate來實現箭頭,很容易就做出效果來了。參考程式碼如下: