标题可能没有意义,但我会尽力解释
我正在绘制化学浓度图。x轴应为当地时间午夜后的小时数(即0,4,8,12,16,20)。然而,当我这样做的时候,所有的Xtick都被弄脏了
xticks = range(0,24,4)
ozoneest["mean"].plot(ax=ax, xticks=xticks,)
结果:
xticks只接受datetime变量数组,其值为:00:00、04:00、08:00、12:00、16:00、20:00
xticks = pd.date_range("2000/01/01", end="2000/01/02", freq="4H").time
ozoneest["mean"].plot(ax=ax, xticks=xticks,)
结果:
这接近我想要的,但我只想要小时数
谢谢
我假设您的数据存储在一个带有DatetimeIndex的数据框中,该索引具有“小时”频率。我无法准确再现您的问题,因为您没有共享生成
ax
对象的代码。无论是使用matplotlib还是pandas创建,问题在于x轴单位基于自1970-01-01以来经过的时间段数(基于pandas中的DatetimeIndex频率,matplotlib中的天数)。因此xticks = range(0,24,4)
相对于您的datetimes位于较左侧。您可以使用ax.get_xticks()
检查默认XTICK的x轴值这里有两种格式化XTick和标签的方法。我建议您不要为小时创建新的DatetimeIndex,因为这会降低代码的重用性,请使用数据帧的DatetimeIndex,如第二个解决方案所示
创建示例数据帧
使用默认的XTICK打印
简单解决方案:不要将DatetimeIndex用作x轴
一般解决方案:从DatetimeIndex中选择xticks并使用strftime创建标签
此解决方案更为通用,因为如果数据集的时间范围发生变化,则无需手动调整XTICK,并且可以通过多种方式轻松自定义刻度标签。 如果要删除前导零,可以使用以下列表:
相关问题 更多 >
编程相关推荐