2017-10-17 5 views
2

J'ai le code suivant qui montre le graphique suivant. Je n'arrive pas à afficher correctement l'année financière sur l'axe des x et cela montre qu'ils sont flottants. J'ai essayé de faire le astype(int) et cela n'a pas fonctionné. Des idées sur ce que je fais mal?Valeurs flottantes Matplotlib sur l'axe au lieu des entiers

p1 = plt.bar(list(asset['FISCAL_YEAR']),list(asset['TOTAL']),align='center') 
plt.show() 

C'est le terrain: enter image description here

Répondre

3

Afin de vérifier que seuls les emplacements entiers obtenir un ticklabel, vous pouvez utiliser un matplotlib.ticker.MultipleLocator avec un nombre entier comme argument.

Pour formater ensuite les nombres sur les axes, vous pouvez utiliser un matplotlib.ticker.StrMethodFormatter.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.ticker 

df = pd.DataFrame({"FISCAL_YEAR" : np.arange(2000,2017), 
        'TOTAL' : np.random.rand(17)}) 

plt.bar(df['FISCAL_YEAR'],df['TOTAL'],align='center') 


locator = matplotlib.ticker.MultipleLocator(2) 
plt.gca().xaxis.set_major_locator(locator) 
formatter = matplotlib.ticker.StrMethodFormatter("{x:.0f}") 
plt.gca().xaxis.set_major_formatter(formatter) 
plt.show() 

enter image description here