Changing datetime axis formatting in matplotlib
I have a row whose index datetime
I want to plot. I want to plot the y-axis row values ββand the x-axis row index. Series
as follows:
2014-01-01 7 2014-02-01 8 2014-03-01 9 2014-04-01 8 ...
I am creating a graph using plt.plot(series.index, series.values)
. But the graph looks like this:
The problem is that I would only like to have a year and a month. However, the graph contains hours, minutes and seconds. How can I remove them to get the formatting I want?
+3
source to share
2 answers
# sample data
import numpy as np
import pandas as pd
N = 30
drange = pd.date_range("2014-01", periods=N, freq="MS")
values = {'values':np.random.randint(1,20,size=N)}
df = pd.DataFrame(values, index=drange)
# use formatters to specify major and minor ticks
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
fig, ax = plt.subplots()
ax.plot(df.index, df.values)
ax.set_xticks(df.index)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m"))
_=plt.xticks(rotation=90)
+6
source to share
You can try something like this:
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
df = pd.DataFrame({'values':np.random.randint(0,1000,36)},index=pd.date_range(start='2014-01-01',end='2016-12-31',freq='M'))
fig,ax1 = plt.subplots()
plt.plot(df.index,df.values)
monthyearFmt = mdates.DateFormatter('%Y %B')
ax1.xaxis.set_major_formatter(monthyearFmt)
_ = plt.xticks(rotation=90)
+8
source to share