From b3a5d1f198fa50b188998caea62af4163f7c5e30 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Wed, 26 Jun 2024 14:04:56 -0300 Subject: [PATCH 01/22] Add new function plot_ctd --- gliderpy/plotting.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 1f635b6..3802379 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -90,3 +90,42 @@ def plot_transect( ax.set_ylim(ax.get_ylim()[0], 0) return fig, ax + + +@register_dataframe_method +def plot_ctd( + df: pd.DataFrame, + var: str, + ax: plt.Axes = None, + color: str = None +) -> tuple: + """Make a CTD profile plot of pressure vs property + depending on what variable was chosen. + + :param var: variable to plot against pressure + :param ax: existing axis to plot on (default: None) + :param color: color for the plot line (default: None) + :return: figure, axes + """ + g = df.groupby(["longitude", "latitude"]) + profile = g.get_group((list(g.groups)[0])) + + if ax is None: + fig, ax1 = plt.subplots(figsize=(5, 6)) + ax1.plot(profile[var], -profile["pressure"], label=var, color=color) + ax1.set_ylabel('Pressure') + ax1.set_xlabel(var) + ax1.legend() + return fig, ax1 + else: + fig = ax.get_figure() + ax2 = ax.twiny() # Create a new twinned axis + ax2.plot(profile[var], -profile["pressure"], label=var, color=color) + ax2.set_xlabel(var) + + # Handle legends + lines, labels = ax.get_legend_handles_labels() + lines2, labels2 = ax2.get_legend_handles_labels() + ax.legend(lines + lines2, labels + labels2, loc="lower center") + + return fig, ax2 From aa566d5fc7f9211efc2be2da1c4557d671e9aa3e Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Wed, 26 Jun 2024 14:05:16 -0300 Subject: [PATCH 02/22] Add new test function plot_ctd --- tests/test_plotting.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 229740c..fd21806 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -11,7 +11,7 @@ import pytest from gliderpy.fetchers import GliderDataFetcher -from gliderpy.plotting import plot_track, plot_transect +from gliderpy.plotting import plot_track, plot_transect,plot_ctd root = Path(__file__).parent @@ -78,3 +78,12 @@ def test_plot_transect_size(glider_data): fig, ax = plt.subplots(figsize=(15, 9)) glider_data.plot_transect(var="temperature") np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) + + +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) +def test_plot_ctd(glider_data): + """Test plot_ctd accessor.""" + fig, ax = plot_ctd(glider_data, 'temperature') + return fig + + From d6af1914e0356f3037434ae8a4c7f663eaed16bf Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Wed, 26 Jun 2024 14:05:42 -0300 Subject: [PATCH 03/22] Add new baseline image plot_ctd --- tests/baseline/test_plot_ctd.png | Bin 0 -> 23304 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/baseline/test_plot_ctd.png diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png new file mode 100644 index 0000000000000000000000000000000000000000..981478db22c49fcf774de248c829bc4d20ed62be GIT binary patch literal 23304 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 NrOi?Cisr~H-QP!61CRg! literal 0 HcmV?d00001 From d4d575f02d643f01cc1f82a7c84ac810ee352fd4 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Fri, 28 Jun 2024 10:54:26 -0300 Subject: [PATCH 04/22] Adjusting errors --- tests/test_plotting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index fd21806..8b500fd 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -34,7 +34,7 @@ def test_plot_track(glider_data): @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect(glider_data): """Test plot_transect accessor.""" - fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") + fig, ax = plot_transect(glider_data,"temperature", cmap="viridis") return fig @@ -83,7 +83,7 @@ def test_plot_transect_size(glider_data): @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_ctd(glider_data): """Test plot_ctd accessor.""" - fig, ax = plot_ctd(glider_data, 'temperature') + fig, ax = plot_ctd(glider_data,"temperature") return fig From 349966429fbd4e86a962588c125e15db4f445971 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 9 Jul 2024 17:52:41 -0300 Subject: [PATCH 05/22] Add tolerance to image compare test --- tests/test_plotting.py | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 8b500fd..ef52529 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -1,21 +1,15 @@ -"""Test transect.""" - import matplotlib as mpl - mpl.use("agg") # Use the "agg" backend from pathlib import Path - import matplotlib.pyplot as plt import numpy as np import pytest - from gliderpy.fetchers import GliderDataFetcher -from gliderpy.plotting import plot_track, plot_transect,plot_ctd +from gliderpy.plotting import plot_track, plot_transect root = Path(__file__).parent - @pytest.fixture() def glider_data(): """Fixture to load whoi_406-20160902T1700.""" @@ -23,22 +17,19 @@ def glider_data(): glider_grab.fetcher.dataset_id = "whoi_406-20160902T1700" return glider_grab.to_pandas() - -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) def test_plot_track(glider_data): """Test plot_track accessor.""" fig, ax = plot_track(glider_data) return fig - -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) def test_plot_transect(glider_data): """Test plot_transect accessor.""" - fig, ax = plot_transect(glider_data,"temperature", cmap="viridis") + fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") return fig - -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) def test_plot_transect_multiple_figures(glider_data): """Test plot_transect in subplots.""" fig, (ax0, ax1) = plt.subplots( @@ -50,40 +41,25 @@ def test_plot_transect_multiple_figures(glider_data): glider_data.plot_transect(var="temperature", ax=ax0, cmap="viridis") glider_data.plot_transect(var="salinity", ax=ax1, cmap="cividis") - # Check if the y-label is named "pressure" assert ax0.get_ylabel() == "pressure" assert ax1.get_ylabel() == "pressure" - # Since sharex=True and sharey=True, xlim and ylim should be the same assert ax0.get_xlim() == ax1.get_xlim() assert ax0.get_ylim() == ax1.get_ylim() - # Get the colorbars cbar0 = ax0.collections[0].colorbar cbar1 = ax1.collections[0].colorbar - # Check colormap assert cbar0.cmap.name == "viridis" assert cbar1.cmap.name == "cividis" - # Check labels assert cbar0.ax.get_ylabel() == "temperature" assert cbar1.ax.get_ylabel() == "salinity" return fig - def test_plot_transect_size(glider_data): """Test plot_transect args.""" fig, ax = plt.subplots(figsize=(15, 9)) glider_data.plot_transect(var="temperature") np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) - - -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) -def test_plot_ctd(glider_data): - """Test plot_ctd accessor.""" - fig, ax = plot_ctd(glider_data,"temperature") - return fig - - From ead3af87929c3010e3e27b0b6d50f1504b1e2db9 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Wed, 10 Jul 2024 16:24:55 -0300 Subject: [PATCH 06/22] changing back test_plotting --- tests/test_plotting.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index ef52529..204ce72 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -17,19 +17,19 @@ def glider_data(): glider_grab.fetcher.dataset_id = "whoi_406-20160902T1700" return glider_grab.to_pandas() -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_track(glider_data): """Test plot_track accessor.""" fig, ax = plot_track(glider_data) return fig -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect(glider_data): """Test plot_transect accessor.""" fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") return fig -@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/"), tolerance=17) +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect_multiple_figures(glider_data): """Test plot_transect in subplots.""" fig, (ax0, ax1) = plt.subplots( From 2cc887d94fc156e4d1e0aa1ba0c10e9d0ac402f3 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn <130789651+FloraSauerbronn@users.noreply.github.com> Date: Wed, 10 Jul 2024 18:11:15 -0300 Subject: [PATCH 07/22] Update test_plotting.py Adding white spaces and top description. --- tests/test_plotting.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 204ce72..adc8e95 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -1,15 +1,21 @@ +"""Test transect.""" + import matplotlib as mpl + mpl.use("agg") # Use the "agg" backend from pathlib import Path + import matplotlib.pyplot as plt import numpy as np import pytest + from gliderpy.fetchers import GliderDataFetcher from gliderpy.plotting import plot_track, plot_transect root = Path(__file__).parent + @pytest.fixture() def glider_data(): """Fixture to load whoi_406-20160902T1700.""" @@ -17,18 +23,21 @@ def glider_data(): glider_grab.fetcher.dataset_id = "whoi_406-20160902T1700" return glider_grab.to_pandas() + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_track(glider_data): """Test plot_track accessor.""" fig, ax = plot_track(glider_data) return fig + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect(glider_data): """Test plot_transect accessor.""" fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") return fig + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect_multiple_figures(glider_data): """Test plot_transect in subplots.""" @@ -58,6 +67,7 @@ def test_plot_transect_multiple_figures(glider_data): return fig + def test_plot_transect_size(glider_data): """Test plot_transect args.""" fig, ax = plt.subplots(figsize=(15, 9)) From e7e25d513c1a6535a3253fcc3d459d6c157375fa Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Thu, 11 Jul 2024 16:20:38 -0300 Subject: [PATCH 08/22] updating ctd_plot with idx param --- gliderpy/plotting.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 3802379..b175924 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -95,20 +95,21 @@ def plot_transect( @register_dataframe_method def plot_ctd( df: pd.DataFrame, + idx: int, var: str, ax: plt.Axes = None, color: str = None ) -> tuple: """Make a CTD profile plot of pressure vs property depending on what variable was chosen. - + :param idx: index of position :param var: variable to plot against pressure :param ax: existing axis to plot on (default: None) :param color: color for the plot line (default: None) :return: figure, axes """ g = df.groupby(["longitude", "latitude"]) - profile = g.get_group((list(g.groups)[0])) + profile = g.get_group((list(g.groups)[idx])) if ax is None: fig, ax1 = plt.subplots(figsize=(5, 6)) From 4398cf9f242020e0d007d54b842d5b3eea201486 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Thu, 11 Jul 2024 16:21:47 -0300 Subject: [PATCH 09/22] updating test_plotting --- tests/test_plotting.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 204ce72..5067f33 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -1,15 +1,21 @@ +"""Test transect.""" + import matplotlib as mpl + mpl.use("agg") # Use the "agg" backend from pathlib import Path + import matplotlib.pyplot as plt import numpy as np import pytest + from gliderpy.fetchers import GliderDataFetcher from gliderpy.plotting import plot_track, plot_transect root = Path(__file__).parent + @pytest.fixture() def glider_data(): """Fixture to load whoi_406-20160902T1700.""" @@ -17,18 +23,21 @@ def glider_data(): glider_grab.fetcher.dataset_id = "whoi_406-20160902T1700" return glider_grab.to_pandas() + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_track(glider_data): """Test plot_track accessor.""" fig, ax = plot_track(glider_data) return fig + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect(glider_data): """Test plot_transect accessor.""" fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") return fig + @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect_multiple_figures(glider_data): """Test plot_transect in subplots.""" @@ -58,8 +67,9 @@ def test_plot_transect_multiple_figures(glider_data): return fig + def test_plot_transect_size(glider_data): """Test plot_transect args.""" fig, ax = plt.subplots(figsize=(15, 9)) glider_data.plot_transect(var="temperature") - np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) + np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) \ No newline at end of file From 2f55d9eff27e94259eff596c05fb7792451590e4 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Thu, 11 Jul 2024 16:35:46 -0300 Subject: [PATCH 10/22] Adding test_plot_ctd --- tests/test_plotting.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 5067f33..be5430b 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -11,7 +11,7 @@ import pytest from gliderpy.fetchers import GliderDataFetcher -from gliderpy.plotting import plot_track, plot_transect +from gliderpy.plotting import plot_track, plot_transect, plot_ctd root = Path(__file__).parent @@ -34,7 +34,7 @@ def test_plot_track(glider_data): @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_transect(glider_data): """Test plot_transect accessor.""" - fig, ax = plot_transect(glider_data, "temperature", cmap="viridis") + fig, ax = plot_transect(glider_data, var="temperature", cmap="viridis") return fig @@ -72,4 +72,11 @@ def test_plot_transect_size(glider_data): """Test plot_transect args.""" fig, ax = plt.subplots(figsize=(15, 9)) glider_data.plot_transect(var="temperature") - np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) \ No newline at end of file + np.testing.assert_array_equal(fig.get_size_inches(), np.array([15.0, 9.0])) + + +@pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) +def test_plot_ctd(glider_data): + """Test plot_ctd accessor.""" + fig, ax = plot_ctd(glider_data, 0, var="temperature") + return fig \ No newline at end of file From e909a389d36247ea2f92c325800c6f84faf9f759 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Thu, 11 Jul 2024 16:36:24 -0300 Subject: [PATCH 11/22] creating new figure for image test compare plot_ctd --- tests/baseline/test_plot_ctd.png | Bin 23304 -> 22686 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png index 981478db22c49fcf774de248c829bc4d20ed62be..4ff6f4b2bb388c3868b9516564aa073b00655a0e 100644 GIT binary patch literal 22686 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 literal 23304 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 NrOi?Cisr~H-QP!61CRg! From 32c5fa9d9894741a159fbc61eea01e19c76797f8 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 23 Jul 2024 11:05:11 -0300 Subject: [PATCH 12/22] fix ruff tests --- gliderpy/plotting.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index b175924..6a7eb0f 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -95,38 +95,39 @@ def plot_transect( @register_dataframe_method def plot_ctd( df: pd.DataFrame, - idx: int, + profile_number: int, var: str, ax: plt.Axes = None, - color: str = None + color: str | None = None, ) -> tuple: """Make a CTD profile plot of pressure vs property depending on what variable was chosen. - :param idx: index of position + + :param profile_number: profile number of CTD :param var: variable to plot against pressure :param ax: existing axis to plot on (default: None) :param color: color for the plot line (default: None) :return: figure, axes """ g = df.groupby(["longitude", "latitude"]) - profile = g.get_group((list(g.groups)[idx])) + profile = g.get_group(list(g.groups)[profile_number]) if ax is None: fig, ax1 = plt.subplots(figsize=(5, 6)) ax1.plot(profile[var], -profile["pressure"], label=var, color=color) - ax1.set_ylabel('Pressure') + ax1.set_ylabel("Pressure") ax1.set_xlabel(var) ax1.legend() return fig, ax1 - else: - fig = ax.get_figure() - ax2 = ax.twiny() # Create a new twinned axis - ax2.plot(profile[var], -profile["pressure"], label=var, color=color) - ax2.set_xlabel(var) - - # Handle legends - lines, labels = ax.get_legend_handles_labels() - lines2, labels2 = ax2.get_legend_handles_labels() - ax.legend(lines + lines2, labels + labels2, loc="lower center") - - return fig, ax2 + + fig = ax.get_figure() + ax2 = ax.twiny() # Create a new twinned axis + ax2.plot(profile[var], -profile["pressure"], label=var, color=color) + ax2.set_xlabel(var) + + # Handle legends + lines, labels = ax.get_legend_handles_labels() + lines2, labels2 = ax2.get_legend_handles_labels() + ax.legend(lines + lines2, labels + labels2, loc="lower center") + + return fig, ax2 From 1ed077622ba1250630808b7e1fa8b64fc607d653 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 23 Jul 2024 12:44:12 -0300 Subject: [PATCH 13/22] fix import order --- tests/test_plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index be5430b..c460c02 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -11,7 +11,7 @@ import pytest from gliderpy.fetchers import GliderDataFetcher -from gliderpy.plotting import plot_track, plot_transect, plot_ctd +from gliderpy.plotting import plot_ctd, plot_track, plot_transect root = Path(__file__).parent From 4edd36d6c757f1aa1afe2456cd568fccb41fd3c8 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 23 Jul 2024 12:45:33 -0300 Subject: [PATCH 14/22] fix end of file --- tests/test_plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index c460c02..4e5fed9 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -79,4 +79,4 @@ def test_plot_transect_size(glider_data): def test_plot_ctd(glider_data): """Test plot_ctd accessor.""" fig, ax = plot_ctd(glider_data, 0, var="temperature") - return fig \ No newline at end of file + return fig From 9232e5c6b86d73324b05aeebff8588bda7a7490c Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Sun, 28 Jul 2024 13:44:32 -0300 Subject: [PATCH 15/22] positive pressure --- gliderpy/plotting.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 6a7eb0f..f4736c8 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -114,15 +114,16 @@ def plot_ctd( if ax is None: fig, ax1 = plt.subplots(figsize=(5, 6)) - ax1.plot(profile[var], -profile["pressure"], label=var, color=color) + ax1.plot(profile[var], profile["pressure"], label=var, color=color) ax1.set_ylabel("Pressure") ax1.set_xlabel(var) ax1.legend() + ax1.invert_yaxis() return fig, ax1 fig = ax.get_figure() ax2 = ax.twiny() # Create a new twinned axis - ax2.plot(profile[var], -profile["pressure"], label=var, color=color) + ax2.plot(profile[var], profile["pressure"], label=var, color=color) ax2.set_xlabel(var) # Handle legends From 5240abbc6e97d2406d567197e2c80854ff7f332d Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 29 Jul 2024 11:57:37 -0300 Subject: [PATCH 16/22] Fixing ax in plot_ctd and creating new baseline image --- gliderpy/plotting.py | 10 ++++++++-- tests/baseline/test_plot_ctd.png | Bin 22686 -> 22457 bytes tests/test_plotting.py | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index f4736c8..530da08 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -122,11 +122,17 @@ def plot_ctd( return fig, ax1 fig = ax.get_figure() - ax2 = ax.twiny() # Create a new twinned axis + + # Check if the ax is already a twinx or twiny + if hasattr(ax, "twinned_axis"): + ax2 = ax.twinned_axis + else: + ax2 = ax.twiny() + ax.twinned_axis = ax2 # Keep a reference to the twinned axis + ax2.plot(profile[var], profile["pressure"], label=var, color=color) ax2.set_xlabel(var) - # Handle legends lines, labels = ax.get_legend_handles_labels() lines2, labels2 = ax2.get_legend_handles_labels() ax.legend(lines + lines2, labels + labels2, loc="lower center") diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png index 4ff6f4b2bb388c3868b9516564aa073b00655a0e..d7ff539a35f2908a6c04fff2b836af0f20242f55 100644 GIT binary patch literal 22457 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 OdA2j>PDicR@B9Jr#$>1f literal 22686 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 diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 4e5fed9..2eb1af7 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -78,5 +78,5 @@ def test_plot_transect_size(glider_data): @pytest.mark.mpl_image_compare(baseline_dir=root.joinpath("baseline/")) def test_plot_ctd(glider_data): """Test plot_ctd accessor.""" - fig, ax = plot_ctd(glider_data, 0, var="temperature") + fig, ax = plot_ctd(glider_data, 0, var="temperature", color="blue") return fig From dae31baeb540a917f80fab51ac4abd4dae4f1b36 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 29 Jul 2024 12:10:45 -0300 Subject: [PATCH 17/22] Removing ax object in excess --- gliderpy/plotting.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 530da08..8eb9d73 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -113,28 +113,28 @@ def plot_ctd( profile = g.get_group(list(g.groups)[profile_number]) if ax is None: - fig, ax1 = plt.subplots(figsize=(5, 6)) - ax1.plot(profile[var], profile["pressure"], label=var, color=color) - ax1.set_ylabel("Pressure") - ax1.set_xlabel(var) - ax1.legend() - ax1.invert_yaxis() - return fig, ax1 + fig, ax = plt.subplots(figsize=(5, 6)) + ax.plot(profile[var], profile["pressure"], label=var, color=color) + ax.set_ylabel("Pressure") + ax.set_xlabel(var) + ax.legend() + ax.invert_yaxis() + return fig, ax fig = ax.get_figure() # Check if the ax is already a twinx or twiny if hasattr(ax, "twinned_axis"): - ax2 = ax.twinned_axis + ax = ax.twinned_axis else: - ax2 = ax.twiny() - ax.twinned_axis = ax2 # Keep a reference to the twinned axis + ax = ax.twiny() + ax.twinned_axis = ax # Keep a reference to the twinned axis - ax2.plot(profile[var], profile["pressure"], label=var, color=color) - ax2.set_xlabel(var) + ax.plot(profile[var], profile["pressure"], label=var, color=color) + ax.set_xlabel(var) lines, labels = ax.get_legend_handles_labels() - lines2, labels2 = ax2.get_legend_handles_labels() + lines2, labels2 = ax.get_legend_handles_labels() ax.legend(lines + lines2, labels + labels2, loc="lower center") - return fig, ax2 + return fig, ax From 51f96853b4552d76fd90174e9a08d287076401fe Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 29 Jul 2024 16:22:08 -0300 Subject: [PATCH 18/22] Removing unnecessary ax features from plot_ctd --- gliderpy/plotting.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 8eb9d73..4ab7a02 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -117,24 +117,28 @@ def plot_ctd( ax.plot(profile[var], profile["pressure"], label=var, color=color) ax.set_ylabel("Pressure") ax.set_xlabel(var) - ax.legend() ax.invert_yaxis() + ax.legend(loc='lower center', bbox_to_anchor=(0.5, 0.09) +) return fig, ax fig = ax.get_figure() # Check if the ax is already a twinx or twiny if hasattr(ax, "twinned_axis"): + # If already twinned, get the correct twinned axis ax = ax.twinned_axis else: + # Create a new twiny axis and keep reference ax = ax.twiny() - ax.twinned_axis = ax # Keep a reference to the twinned axis + ax.twinned_axis = ax + # Plotting the current variable ax.plot(profile[var], profile["pressure"], label=var, color=color) ax.set_xlabel(var) - + + # Update legend lines, labels = ax.get_legend_handles_labels() - lines2, labels2 = ax.get_legend_handles_labels() - ax.legend(lines + lines2, labels + labels2, loc="lower center") + ax.legend(lines, labels, loc="lower center") - return fig, ax + return fig, ax \ No newline at end of file From f03cbf05322d30149c7b8dc33d13d8cb9428cd26 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Mon, 29 Jul 2024 16:29:20 -0300 Subject: [PATCH 19/22] Solving problems from pre-commit and image --- gliderpy/plotting.py | 2 +- tests/baseline/test_plot_ctd.png | Bin 22457 -> 22483 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index 4ab7a02..be0e8a0 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -118,7 +118,7 @@ def plot_ctd( ax.set_ylabel("Pressure") ax.set_xlabel(var) ax.invert_yaxis() - ax.legend(loc='lower center', bbox_to_anchor=(0.5, 0.09) + ax.legend(loc="lower center", bbox_to_anchor=(0.5, 0.09) ) return fig, ax diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png index d7ff539a35f2908a6c04fff2b836af0f20242f55..b70dac9229e8e296f7b79295e617ff092b55516b 100644 GIT binary patch literal 22483 zcmd?RcT^SGwlBPuR=Yvrs01Y%Kr$G}5^R(#IcEXMIZMU>wjiLJBpD>+cBpYKe%3flR{#1Atxj5vcp|Cktvua5A zl;~g9tY5wjULq;T&}bVBZAy#?(ljp_YA6?SkYwy}4-VHXoE*+$V)SiqXR?)$SMStF zN$Ax0qtNCQjlOova==aM)3{tsVORN=dwhE|TEoKDn+7+2x_ruRzJ2~72J<;lF_#B! zr`VMc{$=4Qcn>Qm9(^?EvgP3(#KC>M*qc8efxa+!=N4?BF4@tkK-4YT6@x!Sq~4^Tg4wgR_IDo zWPbcR##66&gJnBWBD7&-M7wC%*)(p_amYT@eSeYDZF|U(m<9*)Iai~!&0}wtmfdn# zgObuKfc(*;M}!&YFtK;7W(B3i#pSH5tlm%VHe#_@a*97N7>Q!LI0t5n zXJ1RR1bpghgR}s+oeQWKdUEm(69%EL|@MSC#SX$&YvX)1eBNBH_1J;&O6sr^jn>gtBZ@ zy6vYKwnjUTK0miH9pk~k%d3%_o2yo65=_jZp)$rkQ(0M=rd3f&o$9ncWzv%sbyF`? z;>nX(iHV>(HQ73~JMg1HpH5xGwK3Q3#UdsV!t^6hnm<)6@D@Ecw`y}ZyF858n}Eu~ zo(+Q`ubIRff~R9U-O@E!Vw>rI8sn+2ag@i7!N|P9t8iQ%RuZ8LTwhjPUifwDUuQ3~ znypu55z)|yym9kppk=b2!KSFpG4$Nk^4x1^?5bY_!dGNgX0!RGhu zaQb;>_S3+>Kc=cFHZmuk^gqtr%y$P zhyVTO-_D37OQ}YEEktoJSw1^@qn7I5f9%X;JUlAvqSwHKaA?J2KQCVEAGU2LGW+Y` zqAaJP;)$o}fyMYIcaWycNhL3z+5A&H@>5%DBzL^^culHuwpN;AdWacEMAG9hxdq$t zv9Zp05rWh;|m$mGd232XLBCRx@U_6IlsM7^Sl>`?qbfwBC zKh5v6TbmH8Sgj%Z&TrYCAhx!)*1k5`Nc69NT@&+p`&J?FmL!{LH&gS6JJs)VPhlJ$ z#Dzw6__vvJM3`|52*m^j2F6b|hMLZ_#huY-39CA9H{UHO5z3M|^8w?DJ36V)FE^7o zUErlfdJdml#@V^_#*G_38NPr0)pm5aAN9Zkr?*H%a^_x zc=-4sI#+nUSKyrbJV`EK!QY)_ZjP@!*6tO(tXnq4S~x(78FlrixJPB$mB;a#(Rx-e zTQxr^p-OmeT0%-Hq}f1TM&{j1`BNB{p4IWG-g` zSorz1e*XNqR{8C~<<6ZuxaZF^6)^GesQviy!=V`$LsyYNJv;cJ*+N%OkBE#+-AGkj z+{cYm_j)Lc9RUHs1#&JK6dIbs?kOG)_FaDS=8amFdj&)(mR-tx!&ap-heZY+22AXE zIk^P98nw{O;xB5y_WNSlbzd&~xNMCQxzyBD9@{0mTFo+t+4ul{EcNDmk2D0Ra31?K z9=n;?Q#fah4t7=>>gw7O!~zK~UHX`-SF3iF3L_&$Bs;Uzl8Sfu{2XN)gj2PZ>F>TI zrmJJ$u?Y`fTO|FxwM9b);f^+J9}`e>Ng7 zZ^EEPx_mM5uNAJO|4K{gWFO`<{=M^8SKj62XZ{mAR@bn3dH)U_@agWofB!A6tUw3j*|7XYkx6tC> zY!JdD9&mCE2E~7_@$YXw3=5?=*~qp2VuhyvK1JXMI(9Rof5MZvMV8%0irr+e60P+~ z#7R9kDpQ>!bnZLZ^w>%?;g3>&ULO>K?FFNABD<8C7-uXZ9;wxZZg6$ zK`II+!}%mciarj)r%GyTe2MPQkG1kPm1Xgle)6op&}Xj&v)PjAgy%SkYK0k67Q#6YqF1z}(JJ!Z?3UDJV z@SvWgmh&3doSz+bNv!e9lo~HZ*H82(e~-mB1^$$AM-NbLe=96NG91E97mCpmivzSy z&qQ@}VA$q=|6R`rnbd6=+|KdZ0qkY?oFbF86qah-dK)nZr8Vid-5sx-~c9=^5koD zcKawrg@{Rv@03)aTWw58w)HOi=RfZW7Lg<~ZLn4y$T^O<6@{~#-VzWHU^i-e@bc`1 zc7KZdKD?YPEK+>V8}F*Bs$RT!!S=N7UlhF0+Fo>GJo6grV%rwK)8id_9Ph_mx^!t{ zrJBI>yAM(Lea9?+DuFEc{#+w#71OifXg(K0BBI2M3?^o^0#VD#-K4Fhq4buh`}5!4 zTqbrujd@^v8-@(EB;j;^w+DBSKg-=W@z1o@+Xe=4WL3Ht= z>_o}Mix>N=JgV-l(e|IgaM8fC(MW0&382jE>{Q^}oe0DxBqUIa$ywdmH-V_Gf5lrW zif6LzEzDG0+hQ$!K%BPG*ta*%%N5%j?GmhT`+03V5zR_t^DLk6F;Dp5e36xH$x=~i z$NN>s9rs#!<6l!cr#x|js77r9nr*KZ({47)2N&Aa+2&fbrVGXzT4vGH-=@_%x|)>h>Nhe2y} zro&=?AM-s->;^f^#f9#%u`!>8U3*0-m-B~E5_JdB%WrhbOB=6E)C+aHJbPv|`uVw9 z-qSZNk=*h*ym#)%&i7>Zyu1F8{3;1X27ke(h$@*pu4?5gUO1aEc5h=g9&({+V+gZX zx8p*uESCGla$DTXv*)kGu8!9--n{t`a5e1lY_Of~%G^BB5_ zrpN0)8XNn`m%h^Dxxqn+?iNp1`j~IkZRL z90(Hpkqc)NgQxi-90v7g{w$UZX=VoM$TgYdBh$NQULlomj_w`URieYzG?D(jtOKcF2 z1P>~7gH}r8BiC6kk_1modPgydFgm-_n%HauW8yi=9G*A(I#6+2{l%=FKqHahIQ+i6 z93rgy6}SXLq|OJ!f+7=|A@{N_<3SW*A9$&k$nDKB8t>Yqnkd5gXkh>{*Yon4h89e_ zMe&G5HA_Vg_f(@APKHr-`@He7d;aI1jQ5oXay%~Gk)DYn1hccrG!e~nK})_6-+~5a zI}EI|Rc~f$G1E|g$WI=67SE>hqO+{X$)$%OGFR~@4D3Pb$Jr$ct!!tJs!T>qJUTDz!)JowxhG0q|C!(|V-)@V7E4~19JjImfv zy)DqG)-L<8y?C$nan%wJ{Vn0SE(w#7;lV=u=`Y7HlKR9X@%xVA^F0wXmBxWVQRe=o zF54W2!t>qDr*J zWN}=l0&EeVknI?c@cEZ76T35;=fA2Kh1|H&L?tb4Y8#Idhm}q!sl9S01G~9Ni2d== zl-_)|+~MBa%ApIeqF6o_#4oM;mI>k24-E7VTAhcfjyxZ45rmc-v2N!D7l`MdpG(Dr za9FUhUff@k$Zxu8UyY)D$^*j|QEd-%;+?%sIgLowQ5~Hr8r=Zi8->QzDP$*k<-WMY zJl+ zFv^NK^W;SE=sfS%wS;`KJU0CeO;t2YSITuEAu-nSC&bTui3z#L(ILKd&B5+FKeI3H z^k_>MwuX1Sgu3u>s zlT%f7HTU}qS#ZmvAvQJ%nd;4_wJZ9|DF<&SC}k#GyxDYmxf38l9uNH!D!An$>zy3c z;dEsQ)1GkJd>HuV9L^Dg@5KCs%XRIgs0(tnz+6edvS5EkmM=@{iC(Z%nU zu(jB{pMbLjrQYb>^AGnXL#w0=28w@_r%D{|88}HtGi}c3w8)%Q;DE~{Z%xOvm)d&- z?_^hnhX&Zs-jIwiAa-gDiEKIxqlpwZNaDWPx3_8V+;Z3~demXFtG$^s;>>Vi`oy%M zz1-&#IEcx9uRyhb#8vOeY{-O?Yo%iuUATGpC$u zxszGBgL$g0ArxFqjrD3p9LwEjW9{G|qFb!ed%M$L&qRMP$};WmWLo-gWj)tg&;KP( zD1@jdoG{`G8f%UF1D1(FgtnIg>qKX})tlEUf1b5{g#XzcPB9r0^t9z%wD#ygk%X%1 z6knTV@t@8Mck(}HS9F&*GkE&IKBg;t_!@Vaf26QcL#wLN>EJ$3Khug*W^owas1YHL zr!SAQf{!1t8A0v`KQy}Y5>-bp-}-QdlC)vf^0SFz2EI%rmHW=0hx^;g5Z@=q$Kyvw zpJ;jAat=`Tji>()8N)wlbh3@AFqbzC1^u_Kwtw3g7^<%9COHMF@<^(RZ_P zj(7BIIrpUn#Ih?*q--t`3y0yfe5MzfNtTZ3hQcIuX2u9rM*w0_8n>H{a%2F~NSbdm zh}swkARiwexd;yP0;3-{^q)R80*E;`SdtH$;T&YF#xd#B#r_#g>lS8sB;qmdCc~pN z4C2n?7mR0Q=x?{py~4267+mqzvHz=mt~WOxab7ghWlNKm9{Um9+1lAS=kV#SU3-9q zNK};uwUE!7H$UE9y(jLPU0lp1BrI%F>ra8$orh~UEj70jnAMvu9j`pJ-JrO5eaQN? z6YoI-W2V&a3QUf3r;`UKwXpBr{mbduhxL z^!bCUqQa&5&Ev1t&G|nuy2-$}ITAioa}5BvLH;7S~?O(fudH|)|{USaaU zlg;cyiA042NsIV7jVLHtUJ~%9^k}(AVihvg*eiC%eD|gWj_Jk3#l^AIXGrcz>sndm zoUd*JP_K}!#aDagY-An8+#X>W;|YK4d&@ESjC zo{u+SJ}Xemy{}wey*a#l>Ws{t$kH}44zm=1o8s8L&3Rg}@Y^~sg#F1=!>5lF8>mua zSb;m^h>-mA&p+`Sak;+Ec1)%0AB_12gtoUgZ5En@1%{u$svA8>eDONFC5w}jDk+&K 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 literal 22457 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 OdA2j>PDicR@B9Jr#$>1f From 0babf90c16dd2519b67055508d0187800282f4a1 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 6 Aug 2024 14:04:53 -0300 Subject: [PATCH 20/22] Removing unecessary features from plot_ctd --- gliderpy/plotting.py | 27 ++++++--------------------- tests/baseline/test_plot_ctd.png | Bin 22483 -> 22518 bytes 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index be0e8a0..a5cb405 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -114,31 +114,16 @@ def plot_ctd( if ax is None: fig, ax = plt.subplots(figsize=(5, 6)) - ax.plot(profile[var], profile["pressure"], label=var, color=color) - ax.set_ylabel("Pressure") - ax.set_xlabel(var) - ax.invert_yaxis() - ax.legend(loc="lower center", bbox_to_anchor=(0.5, 0.09) -) - return fig, ax - - fig = ax.get_figure() - - # Check if the ax is already a twinx or twiny - if hasattr(ax, "twinned_axis"): - # If already twinned, get the correct twinned axis - ax = ax.twinned_axis else: - # Create a new twiny axis and keep reference - ax = ax.twiny() - ax.twinned_axis = ax + fig = ax.get_figure() - # Plotting the current variable ax.plot(profile[var], profile["pressure"], label=var, color=color) + ax.set_ylabel("Pressure") ax.set_xlabel(var) - + ax.invert_yaxis() + # Update legend lines, labels = ax.get_legend_handles_labels() - ax.legend(lines, labels, loc="lower center") + ax.legend(lines, labels, loc="best") - return fig, ax \ No newline at end of file + return fig, ax diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png index b70dac9229e8e296f7b79295e617ff092b55516b..bb03e287b19b96317db300dc522798cc207fc5c1 100644 GIT binary patch literal 22518 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%0Db}>99>QQm#VhEB9L$e;K!%g=?IxLbc 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%0AB_12gtoUgZ5En@1%{u$svA8>eDONFC5w}jDk+&K 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 From 4fdf02b8da953218134cda59581878874bd9defb Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 6 Aug 2024 14:49:58 -0300 Subject: [PATCH 21/22] Removing legend --- gliderpy/plotting.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gliderpy/plotting.py b/gliderpy/plotting.py index a5cb405..4747014 100644 --- a/gliderpy/plotting.py +++ b/gliderpy/plotting.py @@ -122,8 +122,4 @@ def plot_ctd( ax.set_xlabel(var) ax.invert_yaxis() - # Update legend - lines, labels = ax.get_legend_handles_labels() - ax.legend(lines, labels, loc="best") - return fig, ax From 223bd4c31be24f3fa8b88e7bfb9316fe7ad10e23 Mon Sep 17 00:00:00 2001 From: FloraSauerbronn Date: Tue, 6 Aug 2024 14:50:31 -0300 Subject: [PATCH 22/22] updating image --- tests/baseline/test_plot_ctd.png | Bin 22518 -> 19880 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/baseline/test_plot_ctd.png b/tests/baseline/test_plot_ctd.png index bb03e287b19b96317db300dc522798cc207fc5c1..6d38861aa78dc266ea3ae26b78a7e212d199a21e 100644 GIT binary patch literal 19880 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 literal 22518 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%0Db}>99>QQm#VhEB9L$e;K!%g=?IxLbc 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