1

我有一个程序可以处理不同类型的数据。有些数据很大,有些数据非常小。由于某些原因,我只能使用 matplotlib 绘制如下图:

      TimeDelta=FF.index[-1]-FF.index[0]          
      ax = fig.add_subplot(111)
      if TimeDelta>timedelta(days=6):
          intr=int(TimeDelta.days/6)
      else:
          intr=2
  #ax.xaxis.set_minor_locator(dates.WeekdayLocator(byweekday=(1),interval=intr))
      ax.xaxis.set_minor_locator(dates.DayLocator(interval=intr))
      ax.xaxis.set_minor_formatter(dates.DateFormatter('%b%d'))
      years= matplotlib.dates.YearLocator() # every year
      yearsFmt = matplotlib.dates.DateFormatter('')
      ax.xaxis.set_major_locator(years)
      ax.xaxis.set_major_formatter(yearsFmt) 

我觉得这个方法太复杂了,有人有其他简单的方法来处理这种情况吗?

4

1 回答 1

1

有些Auto*dates确实有一些你可以调整的旋钮,但你似乎想要一个非常具体的格式。我只想做一个功能:

def my_x_axis_format(ax, dt):
    if dt>timedelta(days=6):
      intr=int(dt.days/6)
    else:
        intr=2
    #ax.xaxis.set_minor_locator(dates.WeekdayLocator(byweekday=(1),interval=intr))
    ax.xaxis.set_minor_locator(dates.DayLocator(interval=intr))
    ax.xaxis.set_minor_formatter(dates.DateFormatter('%b%d'))
    years= matplotlib.dates.YearLocator() # every year
    yearsFmt = matplotlib.dates.DateFormatter('')
    ax.xaxis.set_major_locator(years)
    ax.xaxis.set_major_formatter(yearsFmt) 

然后你可以让你的数字为

TimeDelta=FF.index[-1]-FF.index[0]          
ax = fig.add_subplot(111)
my_x_axis_format(ax, TimeDelta)
于 2013-02-14T03:41:29.557 回答