我想在matplotlib中针对日期范围绘制一系列值。我将蜱base
参数更改为7,以便在每周开始时得到一个滴答(plticker.IndexLocator, base = 7
)。问题是set_xticklabels
函数不接受base
参数。因此,第二个勾号(代表第2周开始的第8天)从我的日期范围列表中被标记为第2天,而不是第8天(见图)。
如何给set_xticklabels
一个base
参数?
这里是代码:
my_data = pd.read_csv("%r_filename_%s_%s_%d_%d.csv" % (num1, num2, num3, num4, num5), dayfirst=True)
my_data.plot(ax=ax1, color='r', lw=2.)
loc = plticker.IndexLocator(base=7, offset = 0) # this locator puts ticks at regular intervals
ax1.set_xticklabels(my_data.Date, rotation=45, rotation_mode='anchor', ha='right') # this defines the tick labels
ax1.xaxis.set_major_locator(loc)
这里是情节:
发布于 2016-06-28 01:29:02
非常感谢--你的解决方案非常有效。对于其他人将来遇到相同问题的情况:我已经实现了上述解决方案,但也添加了一些代码,以便滴答标签保持所需的旋转,并(与其左侧)对齐相应的滴答。可能不是琵琶,也可能不是最好的练习,但它有效。
x_fmt = mpl.ticker.IndexFormatter(x)
ax.set_xticklabels(my_data.Date, rotation=-45)
ax.tick_params(axis='x', pad=10)
ax.xaxis.set_major_formatter(x_fmt)
labels = my_data.Date
for tick in ax.xaxis.get_majorticklabels():
tick.set_horizontalalignment("left")
https://stackoverflow.com/questions/37983153
复制相似问题