#ConciseDateFormatterを使用した日付フォーマット変更
%matplotlib inline
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np

#the default formatter
base = datetime.datetime(2019, 10, 1)
dates = np.array([base + datetime.timedelta(hours=(0.5*i))
                  for i in range(24*256)])
N = len(dates)
np.random.seed(19423521)
y = np.cumsum(np.random.randn(N))

fig, axs = plt.subplots(4, 1, constrained_layout=True, figsize=(6, 8))
lims = [(np.datetime64('2019-10'), np.datetime64('2020-02')),
        (np.datetime64('2019-12-03'), np.datetime64('2019-12-15')),
        (np.datetime64('2019-12-03 13:00'), np.datetime64('2019-12-04 13:00')),
        (np.datetime64('2019-12-03 11:00'), np.datetime64('2019-12-03 11:01'))]
for nn, ax in enumerate(axs):
    ax.plot(dates, y,'g-')
    ax.set_xlim(lims[nn])
    # rotate_labels...
    for label in ax.get_xticklabels():
        label.set_rotation(30)
        label.set_horizontalalignment('right')
axs[0].set_title('Default Date Formatter')
plt.savefig("defaultdateformatter.png", dpi=100,transparent = False, bbox_inches = 'tight')
plt.show()

#~.dates.ConciseDateFormatter
fig, axs = plt.subplots(4, 1, constrained_layout=True, figsize=(6, 8))
for nn, ax in enumerate(axs):
    locator = mdates.AutoDateLocator(minticks=4, maxticks=9)
    formatter = mdates.ConciseDateFormatter(locator)
    ax.xaxis.set_major_locator(locator)
    ax.xaxis.set_major_formatter(formatter)

    ax.plot(dates, y,'g-')
    ax.set_xlim(lims[nn])
axs[0].set_title('Concise Date Formatter')
plt.savefig("Concisedateformatter.png", dpi=100,transparent = False, bbox_inches = 'tight')
plt.show()

#use the units registry
import matplotlib.units as munits
converter = mdates.ConciseDateConverter()
munits.registry[np.datetime64] = converter
munits.registry[datetime.date] = converter
munits.registry[datetime.datetime] = converter

fig, axs = plt.subplots(4, 1, figsize=(6, 8), constrained_layout=True)
for nn, ax in enumerate(axs):
    ax.plot(dates, y,'g-')
    ax.set_xlim(lims[nn])
axs[0].set_title('Concise Date Formatter')
plt.savefig("Concisedateformatter_regist.png", dpi=100,transparent = False, bbox_inches = 'tight')

plt.show()

 
 #version
import matplotlib
print(matplotlib.__version__)
3.3.4
print(np.__version__)
1.20.1
print(pd.__version__)
1.2.3