Home > Mobile >  pandas MinuteLocator shows few xticks
pandas MinuteLocator shows few xticks

Time:09-27

I have a df time of time series, for 3 trips. spread over a period of more than 1 hour. I want to visualise this on seaborn lineplot.


df.head(3)   # shows trip 533921 starting at about 18h10
    trip_id session_id  timestamp                      speed    travelmode
0   533921   865      2016-04-01 18:00:10.198000 01:00  19.0       car
1   533921   865      2016-04-01 18:00:10.198000 01:00  19.0       car
2   533921   865      2016-04-01 18:00:11.258000 01:00  19.0       car

df.tail(3) # show trip 533923 ends at about 18h52
        trip_id session_id  timestamp                       speed   travelmode
5355    533923     867     2016-04-01 18:52:11.089000 01:00 1.10223    car
5356    533923     867     2016-04-01 18:52:12.106000 01:00 1.10223    car
5357    533923     867     2016-04-01 18:52:12.106000 01:00 1.10223    car

My goal is to show the timeline of all starting and ending of trips, so:

fig, ax=plt.subplots(figsize=(20,8))
sns.lineplot(data=car_df, x='timestamp', y='speed', hue='trip_id', ci=None,  palette="bright")

xformatter = mdates.DateFormatter('%H:%M')
xlocator = mdates.MinuteLocator(byminute=[0,15], interval = 1)

## Set xtick labels
ax.xaxis.set_major_locator(xlocator)
plt.title(f'Car trips from between 18h00- 19h00 ({car_df.trip_id.nunique()} trips)')
## Format xtick labels as HH:MM
ax.xaxis.set_major_formatter(xformatter)
fig.autofmt_xdate()

Giving: enter image description here

The MinuteLocator started showing the minutes intervals 17:00 17:15 but then stopped. How to I make it show until the end of the figure?

CodePudding user response:

If you want ticks for every multiple of 15 minutes, then you need to specify that:

xlocator = mdates.MinuteLocator(byminute=[0, 15, 30, 45], interval = 1)

Presumably your data doesn't span more than an hour, so given byminute=[0,15], only the zeroth and fifteenth minutes received a tick.

  • Related