From 63989f4599cdc9c8e1ec36ab1553ccc2290764a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=BCller?= Date: Fri, 21 Jun 2024 13:42:54 +0200 Subject: [PATCH 1/2] replaced seaborn with mathplotlib for correlation_heatmap --- .../data/tabular/plotting/_table_plotter.py | 21 ++++++++++-------- .../test_should_match_snapshot[normal].png | Bin 11831 -> 12835 bytes 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 7d1cca2e6..e3a001ef6 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -97,8 +97,8 @@ def correlation_heatmap(self) -> Image: # TODO: implement using matplotlib and polars # https://stackoverflow.com/questions/33282368/plotting-a-2d-heatmap import matplotlib.pyplot as plt - import seaborn as sns - + import numpy as np + only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) if self._table.row_count == 0: @@ -115,15 +115,18 @@ def correlation_heatmap(self) -> Image: " automatically expanding." ), ) - fig = plt.figure() - sns.heatmap( - data=only_numerical.corr().to_numpy(), - vmin=-1, + + fig, ax = plt.subplots() + heatmap = plt.imshow( + only_numerical.corr().to_numpy(), + vmin=-1, vmax=1, - xticklabels=only_numerical.columns, - yticklabels=only_numerical.columns, - cmap="vlag", + cmap="coolwarm", ) + ax.set_xticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) + ax.set_yticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) + fig.colorbar(heatmap) + plt.tight_layout() return _figure_to_image(fig) diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_correlation_heatmap/test_should_match_snapshot[normal].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_correlation_heatmap/test_should_match_snapshot[normal].png index eedf2950c2e44e59527ed382a7f6900babc2dce4..9e6cfc0725a82fe8b751d1865f84ae45fcead53e 100644 GIT binary patch literal 12835 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 literal 11831 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 c{b7q Date: Fri, 21 Jun 2024 12:12:04 +0000 Subject: [PATCH 2/2] style: apply automated linter fixes --- src/safeds/data/tabular/plotting/_table_plotter.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 7aa8779b5..573dd258c 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -98,7 +98,7 @@ def correlation_heatmap(self) -> Image: # https://stackoverflow.com/questions/33282368/plotting-a-2d-heatmap import matplotlib.pyplot as plt import numpy as np - + only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) if self._table.row_count == 0: @@ -115,11 +115,11 @@ def correlation_heatmap(self) -> Image: " automatically expanding." ), ) - + fig, ax = plt.subplots() heatmap = plt.imshow( - only_numerical.corr().to_numpy(), - vmin=-1, + only_numerical.corr().to_numpy(), + vmin=-1, vmax=1, cmap="coolwarm", )