2016-11-09 53 views
1

class matplotlib.ticker.FuncFormatter(func) 功能應該在兩個輸入(刻度值x和位置POS),並返回一個字符串如何正確使用FuncFormatter(func)?

def millions(x, pos): 
    'The two args are the value and tick position' 
    return '$%1.1fM' % (x*1e-6) 

發生了什麼事POS參數?它甚至沒有設置爲None。

我添加了print(pos)並得到了0 1 2 3 4,當我將鼠標移動到圖像上時加上了很多無。只有我不知道如何處理這些信息。

我所看到的例子,其中x is used但沒有POS機,我不明白應該如何使用。有人能給我一個例子嗎?感謝

+0

爲什麼負標誌?什麼會是更好的問題? – JMJ

+0

如果'pos'不是'None'那麼你所要求的文本打勾標記。如果POS _is_ None'然後格式化被稱爲'某些其他原因(例如,在GUI的鼠標位置文本) – tacaswell

+0

好了,我們還沒有沒有,但功能沒有出現使用值是。我認爲返回字符串是我們用於刻度標籤文本的內容?你知道如何用函數中使用的pos參數做一個例子嗎? – JMJ

回答

1

Here是由Maplotlib單證提供一個例子。

from matplotlib.ticker import FuncFormatter 
import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(4) 
money = [1.5e5, 2.5e6, 5.5e6, 2.0e7] 


def millions(x, pos): 
    'The two args are the value and tick position' 
    return '$%1.1fM' % (x*1e-6) 

formatter = FuncFormatter(millions) 

fig, ax = plt.subplots() 
ax.yaxis.set_major_formatter(formatter) 
plt.bar(x, money) 
plt.xticks(x + 0.5, ('Bill', 'Fred', 'Mary', 'Sue')) 
plt.show() 

產生

enter image description here

+0

是的,我已經看到了這一點,但沒有被使用在高清百萬(X,POS)POS機。或者如果是這樣,我不明白功能足以看到它。 – JMJ

+1

@JMJ它被matplotlib引擎蓋下使用。用戶無需擔心。 –