I am trying to plot values of temperature against time with the time formatted as HH:MM. I am able to set the xticks to recur every 15 minutes but the first tick is at the first time (e.g. 04:40).
Is there a way to shift the ticks to occur on the hour and on the concurrent quarter-hours (04:45, 05:00, 05:15, etc.)? My current code is as follows:
import matplotlib.pyplot as plt
import matplotlib.dates as md
import datetime as dt
## Dummy times and temperatures
time = [dt.datetime(2017,2,15,4,40),dt.datetime(2017,2,15,4,46),dt.datetime(2017,2,15,4,52),dt.datetime(2017,2,15,4,58),dt.datetime(2017,2,15,5,4),dt.datetime(2017,2,15,5,10)]
temp = [7, 8, 9, 10, 11, 12]
## Plot the data
figtemp, ax = plt.subplots(1, 1)
ax.plot(time, temp)
## Set time format and the interval of ticks (every 15 minutes)
xformatter = md.DateFormatter('%H:%M')
xlocator = md.MinuteLocator(interval = 15)
## Set xtick labels to appear every 15 minutes
ax.xaxis.set_major_locator(xlocator)
## Format xtick labels as HH:MM
plt.gcf().axes[0].xaxis.set_major_formatter(xformatter)
The matplotlib.pyplot.xticks () function is used to get or set the current tick locations and labels of the x-axis. It passes no arguments to return the current values without modifying them. Before we look into various implementations of Matplotlib xticks (), let me brief you with the syntax and return the same.
matplotlib.pyplot.xticks (ticks=None, labels=None, \*\*kwargs) ticks: array-like containing the list of xtick locations.
To limit the number of ticks or control their frequency, some explicit actions must be taken Matplotlib is the defacto data visualization library for Python.
Plotting data in Python is easy when using Matplotlib. Plotted figures will often reflect automatically-determined axis markers (a.k.a. tick marks) based on values passed from datasets. To limit the number of ticks or control their frequency, some explicit actions must be taken Matplotlib is the defacto data visualization library for Python.
You could tell the MinuteLocator
to only use the minutes 0,15,30,45
using the byminute
argument.
xlocator = md.MinuteLocator(byminute=[0,15,30,45], interval = 1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With