From 8e14619bba19395e73e686556379d449baf2b9cf Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 3 Jun 2024 11:43:08 -0300 Subject: [PATCH 1/5] Creating plotting.py with pandas-flavor --- gliderpy/plotting.py | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 gliderpy/plotting.py diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py new file mode 100644 index 0000000..1bdd964 --- /dev/null +++ b/gliderpy/plotting.py @@ -0,0 +1,58 @@ +"""Some convenience functions to help visualize glider data.""" + +from __future__ import annotations + +import warnings +from typing import TYPE_CHECKING + +try: + import cartopy.crs as ccrs + import matplotlib.dates as mdates + import matplotlib.pyplot as plt +except ModuleNotFoundError: + warnings.warn( + "gliderpy requires matplotlib and cartopy for plotting.", + stacklevel=1, + ) + raise + + +if TYPE_CHECKING: + import pandas as pd + +from pandas_flavor import register_dataframe_method + +@register_dataframe_method + +def plot_transect( + df: pd.DataFrame, + var: str, + **kw: dict, +) -> tuple(plt.Figure, plt.Axes): + """Make a scatter plot of depth vs time coloured by a user defined + variable. + + :param var: variable to colour the scatter plot + :return: figure, axes + """ + cmap = kw.get("cmap", None) + + fig, ax = plt.subplots(figsize=(17, 2)) + cs = ax.scatter( + df.index, + df["depth (m)"], + s=15, + c=df[var], + marker="o", + edgecolor="none", + cmap=cmap, + ) + + ax.invert_yaxis() + xfmt = mdates.DateFormatter("%H:%Mh\n%d-%b") + ax.xaxis.set_major_formatter(xfmt) + + cbar = fig.colorbar(cs, orientation="vertical", extend="both") + cbar.ax.set_ylabel(var) + ax.set_ylabel("Depth (m)") + return fig, ax From 42bb60565f6729b4e19f375ce2b00dc603857d55 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 3 Jun 2024 16:25:01 -0300 Subject: [PATCH 2/5] =?UTF-8?q?Descri=C3=A7=C3=A3o=20das=20altera=C3=A7?= =?UTF-8?q?=C3=B5es=20feitas=20no=20plotting.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gliderpy/plotting.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 1bdd964..44d038f 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -40,7 +40,7 @@ def plot_transect( fig, ax = plt.subplots(figsize=(17, 2)) cs = ax.scatter( df.index, - df["depth (m)"], + df["pressure"], s=15, c=df[var], marker="o", @@ -56,3 +56,5 @@ def plot_transect( cbar.ax.set_ylabel(var) ax.set_ylabel("Depth (m)") return fig, ax + + From 3425366ba43a85860cfb8527e40507633a73128a Mon Sep 17 00:00:00 2001 From: FloraSauerbronn <130789651+FloraSauerbronn@users.noreply.github.com> Date: Tue, 4 Jun 2024 11:19:29 -0300 Subject: [PATCH 3/5] Update gliderpy/plotting.py Eliminate blank line Co-authored-by: Filipe --- gliderpy/plotting.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 1bdd964..640a666 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -23,7 +23,6 @@ from pandas_flavor import register_dataframe_method @register_dataframe_method - def plot_transect( df: pd.DataFrame, var: str, From 85640db177c4250969e7474427e087d751d3ef7c Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Thu, 6 Jun 2024 09:54:55 -0300 Subject: [PATCH 4/5] Fixed issues mentined in the PR review --- gliderpy/__init__.py | 9 +++++++++ gliderpy/plotting.py | 4 +--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gliderpy/__init__.py b/gliderpy/__init__.py index 37971ac..59077ac 100644 --- a/gliderpy/__init__.py +++ b/gliderpy/__init__.py @@ -4,3 +4,12 @@ from ._version import __version__ except ImportError: __version__ = "unknown" + +from .plotting import plot_transect +from .fetchers import GliderDataFetcher + + +__all__ = [ + "GliderDataFetcher", + "plot_transect", +] \ No newline at end of file diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 44d038f..5d00a4c 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -6,7 +6,6 @@ from typing import TYPE_CHECKING try: - import cartopy.crs as ccrs import matplotlib.dates as mdates import matplotlib.pyplot as plt except ModuleNotFoundError: @@ -23,7 +22,6 @@ from pandas_flavor import register_dataframe_method @register_dataframe_method - def plot_transect( df: pd.DataFrame, var: str, @@ -54,7 +52,7 @@ def plot_transect( cbar = fig.colorbar(cs, orientation="vertical", extend="both") cbar.ax.set_ylabel(var) - ax.set_ylabel("Depth (m)") + ax.set_ylabel("pressure") return fig, ax From 40f6e402ced21c35936fe1d017ffa55f2e0dce06 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:14:32 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- gliderpy/__init__.py | 5 ++--- gliderpy/plotting.py | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/gliderpy/__init__.py b/gliderpy/__init__.py index 59077ac..8d2cbf0 100644 --- a/gliderpy/__init__.py +++ b/gliderpy/__init__.py @@ -5,11 +5,10 @@ except ImportError: __version__ = "unknown" -from .plotting import plot_transect from .fetchers import GliderDataFetcher - +from .plotting import plot_transect __all__ = [ "GliderDataFetcher", "plot_transect", -] \ No newline at end of file +] diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 5d00a4c..d1e5d33 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -21,6 +21,7 @@ from pandas_flavor import register_dataframe_method + @register_dataframe_method def plot_transect( df: pd.DataFrame, @@ -54,5 +55,3 @@ def plot_transect( cbar.ax.set_ylabel(var) ax.set_ylabel("pressure") return fig, ax - -