0

我一直在修改一个接受 DataFrame (具有日期时间索引)的函数,然后选择一列并将其转换为系列,然后绘制它。一切似乎都很好,但我无法正确显示日期。我希望 x 轴按周而不是按数据点打勾。

这是我得到的输出。

    class App: 
        def __init__(self,master, df): 
            frame = Frame(master) 
            frame.pack() 


            series = df['Daily  T'].cumsum()

            self.f = Figure(figsize=(12,6), dpi=100, linewidth=2) 
            self.a = self.f.add_subplot(111) 
            self.a.grid(True) 
            self.a.set_xlabel("DATES")
            self.a.plot(series, 'r-o') 

            self.a.set_xticks(range(len(series)))

            self.a.set_xticklabels([datetime.strftime(date, '%x') for date in series.index])

            self.f.autofmt_xdate()


            self.canvas = FigureCanvasTkAgg(self.f, master=child_win_plot) 
            self.canvas.show() 
            self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1) 





    app=App(child_win_plot, filtered_df) 

我不确定应该改变什么。

4

1 回答 1

1

我无法测试它,但这个怎么样

# range(0,len(series),7) give (0,7,14,21)
self.a.set_xticks(range(0,len(series),7)) 

和空字符串的日期

# empty string in place of some dates 
# [date, '', '', '', '' , '', '', '' , date ...]
xlabels = [ datetime.strftime(date, '%x') if index%7 == 0 else '' for index, date in enumerate(series.index)]
self.a.set_xticklabels(xlabels)

或只有日期 - 没有空字符串

xlabels = [ datetime.strftime(date, '%x') for index, date in enumerate(series.index) if index%7 == 0 ]
self.a.set_xticklabels(xlabels)
于 2013-11-07T21:12:24.720 回答