matplotlib——對座標的控制,加圖例註釋

我們可以使用matplotlib.pyplot.locator_params()來控制刻度線定位器的行爲。 即使通常會自動確定標記點的位置,但是如果我們想要繪製較小的標記,則可以控制標記點的數量並使用緊密的視圖:

from pylab import *
import numpy as np

ax = gca()

ax.locator_params(tight = True, nbins = 10)

ax.plot(np.random.normal(10, 0.1, 100))

show()
這應該給我們下面的圖表:

然後我們可以使用matplotlib.dates.date2num(),matplotlib等助手函數。 dates.num2date()和matplotlib.dates.drange()在不同的表示之間轉換日期。


我們來看另一個例子:

from pylab import *
import matplotlib as mpl
import datetime

fig = figure()
ax = gca()
start = datetime.datetime(2013, 1, 1)
stop = datetime.datetime(2013, 12, 31)
delta = datetime.timedelta(days = 1)
dates = mpl.dates.drange(start, stop, delta)
values = np.random.rand(len(dates))

ax = gca()
ax.plot_date(dates, values, linestyle= '-', marker='')
date_format = mpl.dates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(date_format)
fig.autofmt_xdate()
show()
上面的代碼會給我們下面的圖表:


添加圖例和註釋

圖例和註釋清楚地解釋數據圖。 通過給每個圖表分配一個關於它所代表的數據的簡短描述,我們在閱讀者(觀衆)頭腦中啓用一個更簡單的心智模型。 這個方法將顯示如何註釋我們的數字上的特定點,以及如何創建和定位數據圖例。

讓我們來演示如何添加圖例和註釋:

if __name__ == '__main__':
    x1 = np.random.normal(30, 3, 100)
    x2 = np.random.normal(20, 2, 100)
    x3 = np.random.normal(10, 3, 100)

    plt.plot(x1, label = 'plot')
    plt.plot(x2, label = '2nd plot')
    plt.plot(x3, label = 'last plot')

    plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
               ncol=3, mode='expand', borderaxespad=0.)
    plt.annotate('Important value', (55,20),
                 xycoords='data',
                 xytext=(5,38),
                 arrowprops = dict(arrowstyle = '->'))

    plt.show()
上面的代碼會給我們下面的圖:

我們所做的就是爲每個繪圖分配一個字符串標籤,因此legend()將嘗試確定要在圖例框中添加的內容。 我們通過定義loc參數來設置圖例框的位置。 這是可選的,但是我們想要指定一個位置,這個位置最不可能用於繪製圖例的圖例。 將位置值設置爲0是非常有用的,因爲它會自動檢測圖形的位置,圖例的位置可以與圖形重疊最小。

所有位置參數字符串在下表中給出:


如果不在圖例中顯示標籤,請將標籤設置爲_nolegend_。

對於圖例,我們定義了ncol = 3的列數,並設置了左下角的位置。 我們指定了一個邊界框(bbox_to_anchor),從位置(0.,1.02)開始,寬度爲1,高度爲0.102。 這些是標準化的座標軸。 參數模式爲“None”或“expand”以允許圖例框水平放大軸區域。 參數borderaxespad定義軸和圖例邊界之間的填充。

對於註釋,我們已經定義了一個字符串在座標xy上的圖上繪製。 座標系指定與數據1相同; 因此,座標系是xycoord ='data'。 文本的起始位置由xytext的值定義。

箭頭從xytext繪製到xy座標,arrowprops字典可以定義該箭頭的許多屬性。 對於這個例子,我們用箭頭來定義箭頭樣式。



發佈了77 篇原創文章 · 獲贊 25 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章