У меня есть Series
, который я хотел бы построить в виде гистограммы: pd.Series([-4,2, 3,3, 4,5,9,20]).value_counts()
Поскольку у меня много баров, я хочу отображать только некоторые (равноудаленные) тики.Однако, если я не буду активно работать против этого, pyplot напечатает неправильные метки.Например, если я пропущу set_xticklabels
в приведенном ниже коде, я получу 
, где каждый элемент из индекса берется и просто отображается с указанным расстоянием.
Этот кодделает то, что я хочу:
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
s = pd.Series([-4,2, 3,3, 4,5,9,20]).value_counts().sort_index()
mi,ma = min(s.index), max(s.index)
s = s.reindex(range(mi,ma+1,1), fill_value=0)
distance = 10
a = s.plot(kind='bar')
condition = lambda t: int(t[1].get_text()) % 10 == 0
ticks_,labels_=zip(*filter(condition, zip(a.get_xticks(), a.get_xticklabels())))
a.set_xticks(ticks_)
a.set_xticklabels(labels_)
plt.show()

Но я все еще чувствую, что я здесь излишне умен.Я пропускаю функцию?Это лучший способ сделать это?