2013-03-09 118 views
0

我對Matplotlib並不是很陌生。儘管我不是每天(或每週,甚至每個月)都使用它,但我已經用它做了相當多的數字。所以我傾向於忘記一些基本的東西,例如,如何添加圖例,如何添加顏色條,如何自定義顏色映射,如何更改圖形特定部分的字體,如何製作一些透明效果等等。當然,每當我有一個問題時,我總是可以谷歌它,谷歌很可能會帶我到stackoverflow或其他類似的網站,或一些博客文章,我幾乎總是可以得到一個解決方案。這給我的印象是,「官方」的文件並不像應該那樣有用。如何在不搜索Google或Stackoverflow的情況下學習Matplotlib?

但是我一定是錯的,即官方文件必須非常有用,否則那些回答問題的人怎麼知道解決方案?也許他們是「內部人士」(Matplotlib的開發者)?

所以我的問題是,如果你不是開發(但你是受歡迎的,如果你要回答這個問題),並假設你已經在這裏回答了許多Matplotlib有關的問題,你如何學習這些技巧自己不問Google?如果答案沒有立即出現在你的腦海中(不是谷歌,因爲你是誰回答這個問題,在此之前,也許這個答案在谷歌還沒有存在)?

請注意,我是而不是抱怨文檔。我想我只是沒有找到一個有效的方式來使用它。

或者,由於Matplotlib的內在複雜性,或許可能找到特定請求的解決方案不可避免地不直截了當?通過內在的複雜性,我的意思是在Matplotlib中,類似的事情通常可以用許多不同的方式來完成,因此如果在開始時碰巧選擇一個特定的(並且不尋常的)任何原因),然後遇到問題,問題可能沒有在手冊中明確列出,也許只有那些瞭解Matplotlib真正在底層工作的大師才能提出解決方案。

教一個如何釣魚比給一條魚更有幫助。

注意:我今天遇到的具體問題是爲圖形添加顏色條。在我的情況中,稍微「特殊」的事情是,主圖像是多邊形的集合,每個單獨的顏色都是單獨設置的。所以簡單的colorbar函數似乎不起作用,至少不會像第一個Google的「matplotlib colorbar example」結果中提供的那樣。在這個特定的情況下,它確實通過Google的第二個結果得到了解決,但是這只是在用谷歌的第一個結果進行多次試驗之後才發現的(並且在用其他關鍵字搜索之後),這有點令人沮喪......順便說一下,

fig = plt.figure(figsize=(10,10)) 
ax = fig.add_subplot(111, ...) 

成立軸線盒(這是必要的,因爲我的多邊形必須被添加到預先存在的軸架),所以我必須使用

ax.xaxis.label.set_fontsize(20) 

改變的字體大小xaxis標籤,這是相當多的谷歌搜索後才發現的。我怎樣才能知道我自己是斧頭有一個屬性x軸X軸有一個屬性標籤標籤有一個功能set_fontsize,並把它們的含義時,他們的名字不像這裏那麼明顯?

+3

那麼,有兵(EG)如果你願意.. – 2013-03-09 05:32:43

+1

http://matplotlib.org/有一個「快速搜索」框,你可以使用。 – 2013-03-09 05:40:02

+2

你可以隨時閱讀代碼並計算出結果。這是如何編寫大量社區文檔 – 2013-03-09 05:43:18

回答

1

使用python命令行我通常會嘗試通過matplotlib本身使用Python來通讀它。

假設你的例子:

fig = plt.figure(figsize=(10,10)) 
ax = fig.add_subplot(111, ...) 

問題

我怎麼能知道我自己是斧頭有一個屬性x軸,X軸有一個屬性標籤,標籤上有一個功能set_fontsize

答案

查找的dir

for item in dir(ax): 
    print item 
#or in case i guess there should be a setter for sth. i search: 
for item in dir(ax): 
    if item.startswith("set_"): 
     print item 
#or if i search sth. about labels: 
for item in dir(ax): 
    if "label" in item: 
     print item 

問題

和其中的含義時,他們的名字都沒有那樣明顯這裏

當我找到某事時。有爲我讀了docstring

print ax.xaxis.label.set_size.__doc__ 

在matplotlib的文檔字符串通常是非常有用的,足以說明setter和getter方法。

如果這沒有幫助,我找什麼類的文檔中搜索:

>>>type(ax.xaxis.label) 
<class 'matplotlib.text.Text'> 

什麼 - 在這個例子 - 會帶我here

+0

我認爲你的方法是正確的選擇。謝謝!或許耐心和冷靜,像偵探一樣工作是關鍵,因爲有時當人急於找到解決方案時,不能仔細查看包含在「dir」中的文檔或信息。 – FJDU 2013-03-09 13:13:45

相關問題