From 464e925bec7f849e9cade26e2ca2d7d3549a60eb Mon Sep 17 00:00:00 2001 From: Brian Blaylock Date: Tue, 22 Oct 2024 09:29:09 -0700 Subject: [PATCH] update --- docs/images/image-11.png | Bin 0 -> 20634 bytes docs/matplotlib-dates.md | 45 +++++++++++++++++++++++++++++++++++++++ docs/matplotlib.md | 31 --------------------------- 3 files changed, 45 insertions(+), 31 deletions(-) create mode 100644 docs/images/image-11.png create mode 100644 docs/matplotlib-dates.md diff --git a/docs/images/image-11.png b/docs/images/image-11.png new file mode 100644 index 0000000000000000000000000000000000000000..390f26f565a2c99b3463d8b23baef2d45f3819a1 GIT binary patch literal 20634 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%0D!8T%zpQ9 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 X{(FBKEk6T1Y>>gz)z4*}Q$iB}iUJos literal 0 HcmV?d00001 diff --git a/docs/matplotlib-dates.md b/docs/matplotlib-dates.md new file mode 100644 index 0000000..e184fb2 --- /dev/null +++ b/docs/matplotlib-dates.md @@ -0,0 +1,45 @@ +# Matplotlib: Dates + +## Date axis ticks label format + +```python +import matplotlib.dates as mdates + +formatter = mdates.DateFormatter('%Y-%m-%d %H:%M:%S') +ax.xaxis.set_major_formatter(formatter) +``` + +### Set date autoformatter: + +```python +plt.rcParams['date.autoformatter.day'] = '%b %d\n%H:%M' +plt.rcParams['date.autoformatter.hour'] = '%b %d\n%H:%M' +``` + +## Date axis tick location + +```python +import matplotlib.dates as mdates +ax.xaxis.set_major_locator(mdates.HourLocator(range(0, 24, 3))) +ax.xaxis.set_minor_locator(mdates.HourLocator(range(0, 24, 1))) +``` + +## Tick format and location + +```python +import pandas as pd +from matplotlib.dates import HourLocator, DateFormatter + +x = pd.date_range("2017-01-01", "2017-01-02", freq="h") +y = range(len(x)) +plt.plot(x, y, marker=".") +plt.gca().xaxis.set_major_locator(HourLocator(byhour=range(0, 24, 6))) +plt.gca().xaxis.set_minor_locator(HourLocator(byhour=range(0, 24, 1))) +plt.gca().xaxis.set_major_formatter(DateFormatter("%d %b %Y\n%H:%M\n%A")) +``` +![alt text](images/image-11.png) + +## Dates and colorbars + +Use Dates on Colorbar Ticks +https://github.com/matplotlib/matplotlib/issues/17447#issuecomment-630885219 diff --git a/docs/matplotlib.md b/docs/matplotlib.md index 788576f..eb4fe60 100644 --- a/docs/matplotlib.md +++ b/docs/matplotlib.md @@ -64,38 +64,7 @@ plt.rcParams["axes.axisbelow"] = True plt.rcParams['svg.fonttype'] = 'none' ``` -## Dates -```python -import matplotlib.dates as mdates -formatter = mdates.DateFormatter('%Y-%m-%d %H:%M:%S') -ax.xaxis.set_major_formatter(formatter) -``` - -```python -import matplotlib.dates as mdates -ax.xaxis.set_major_locator(mdates.HourLocator(range(0, 24, 3))) -ax.xaxis.set_minor_locator(mdates.HourLocator(range(0, 24, 1))) -``` - -Use Dates on Colorbar Ticks -https://github.com/matplotlib/matplotlib/issues/17447#issuecomment-630885219 - -Set date autoformatter: - -```python -plt.rcParams['date.autoformatter.day'] = '%b %d\n%H:%M' -plt.rcParams['date.autoformatter.hour'] = '%b %d\n%H:%M' -``` - -Set date ticks - -```python -from matplotlib.dates import HourLocator, DateFormatter -plt.plot(pd.date_range('2017-01-01', '2017-01-02', freq='h'), range(25)) -plt.gca().xaxis.set_major_locator(HourLocator(byhour=range(0,24,6))) -plt.gca().xaxis.set_major_formatter(DateFormatter('%d %b %Y\n%H:%M\n%A')) -``` ## Latex Strings