forked from GenericMappingTools/pygmt
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create gallery example for datetime inputs
Based on GenericMappingTools#464 and GenericMappingTools#549 I prepared a gallery example for plotting datetime inputs.
- Loading branch information
1 parent
999a3f3
commit 95c8f63
Showing
1 changed file
with
58 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
""" | ||
Datetime inputs | ||
--------------- | ||
The :meth:`pygmt.Figure.plot` method can plot datetime inputs of individual types: | ||
- numpy.datetime64: for available options see https://numpy.org/doc/stable/reference/arrays.datetime.html | ||
- :class:`pandas.DatetimeIndex` | ||
- :class:`xarray.DataArray`: datetimes included in a *xarray.DataArray* | ||
- raw datetime strings in ISO format (e.g. ``["YYYY-MM-DD", "YYYY-MM-DDTHH", "YYYY-MM-DDTHH:MM:SS"]``) | ||
- Python built-in :class:`datetime.datetime` and :class:`datetime.date` | ||
We can pass datetime inputs based on one of the types listed above directly to the ``x`` and ``y`` options. | ||
The ``region`` argument has to include the :math:`x` and :math:`y` axis limits as *str* in the form | ||
``"date_min/data_max/ymin/ymax"``. | ||
""" | ||
|
||
import datetime | ||
import numpy as np | ||
import pandas as pd | ||
import xarray as xr | ||
import pygmt | ||
|
||
fig = pygmt.Figure() | ||
|
||
# create a basemap with limits of 2010-01-01 to 2020-06-01 on the x axis and | ||
# 0 to 10 on the y axis | ||
fig.basemap(projection="X15c/5c", region="2010-01-01/2020-06-01/0/10", frame=True) | ||
|
||
# numpy.datetime64 types | ||
x = np.array( | ||
["2010-06-01", "2011-06-01T12", "2012-01-01T12:34:56"], dtype="datetime64") | ||
y = [1, 2, 3] | ||
fig.plot(x, y, style="c0.4c", pen="1p", color="red3") | ||
|
||
# pandas.DatetimeIndex | ||
x = pd.date_range("2013", periods=3, freq="YS") | ||
y = [4, 5, 6] | ||
fig.plot(x, y, style="t0.4c", pen="1p", color="gold") | ||
|
||
# xarray.DataArray | ||
x = xr.DataArray(data=pd.date_range(start="2015-03", periods=3, freq="QS")) | ||
y = [7.5, 6, 4.5] | ||
fig.plot(x, y, style="s0.4c", pen="1p") | ||
|
||
# raw datetime strings | ||
x = ["2016-02-01", "2016-06-04T14", "2016-10-04T00:00:15"] | ||
y = [7, 8, 9] | ||
fig.plot(x, y, style="a0.4c", pen="1p", color="dodgerblue") | ||
|
||
# the Python built-in datetime and date | ||
x = [datetime.date(2018, 1, 1), datetime.datetime(2019, 6, 1, 20, 5, 45)] | ||
y = [6.5, 4.5] | ||
fig.plot(x, y, style="i0.4c", pen="1p", color="seagreen") | ||
|
||
fig.show() |