【问题标题】:Matplotlib x-axis ticks, fixed location for datesMatplotlib x 轴刻度,日期的固定位置
【发布时间】:2019-11-30 20:28:28
【问题描述】:

在我正在制作的时间线图中,我希望日期代码仅显示指定的日期。 (在我的示例中,我显示事件“A”的代码,但它可以是代码上的任何列表)。我找到了当 x 轴数据是数字时的方法(在我的示例中为上子图),但这不适用于时间戳日期类型(下图)。

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import matplotlib.ticker as ticker

    myData = pd.DataFrame({'date':['2019-01-15','2019-02-10','2019-03-20','2019-04-17','2019-05-23','2019-06-11'],'cnt':range(6),'event':['a','b','a','b','a','b']})
    myData['date'] = [pd.Timestamp(j) for j in myData['date']]

start = pd.Timestamp('2019-01-01')
stop = pd.Timestamp('2019-07-01')
inxa = myData.loc[myData['event'] == 'a'].index
inxb = myData.loc[myData['event'] == 'b'].index
# create two plots, one with 'cnt' as x-axis, the other 'dates' on x-axis.
fig, ax = plt.subplots(2,1,figsize=(16,9))
ax[0].plot((0,6),(0,0), 'k')
ax[1].plot((start, stop),(0,0))


for g in inxa:
    ax[0].plot((myData.loc[g,'cnt'],myData.loc[g,'cnt']),(0,1),c='r')
    ax[1].plot((myData.loc[g,'date'],myData.loc[g,'date']),(0,1),c='r')
for g in inxb:
    ax[0].plot((myData.loc[g,'cnt'],myData.loc[g,'cnt']),(0,2),c='b')
    ax[1].plot((myData.loc[g,'date'],myData.loc[g,'date']),(0,2),c='b')
xlist0 = myData.loc[myData['event']=='a','cnt']
xlist1 = myData.loc[myData['event']=='a','date']

ax[0].xaxis.set_major_locator(ticker.FixedLocator(xlist0))
# ax[1].xaxis.set_major_locator(**???**)

【问题讨论】:

  • 对于ax[1] 有多少或您想要在哪里打勾标签?我想这里有一个重复的问答,只需要了解您要做什么。

标签: python matplotlib


【解决方案1】:

找不到足够的副本,可能是我看的不够仔细。有多种方法可以做到这一点:

首先转换为 数字 或使用 Pandas 日期时间序列的 基础

xticks = [mdates.date2num(z) for z in xlist1]
# or
xticks = xlist1.values

至少有几种使用方式

ax[1].xaxis.set_major_locator(ticker.FixedLocator(xticks))
ax[1].xaxis.set_ticks(xticks)

Date tick labels
How to set the xticklabels for date in matplotlib
how to get ticks every hour?
...

【讨论】:

  • 我找不到重复的以太。两种方式都可以正常工作并做我需要的。谢谢。
猜你喜欢
  • 2013-01-04
  • 2020-10-01
  • 2018-11-13
  • 2021-04-03
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
相关资源
最近更新 更多