From 1c10390d818724b290a0f238f0012f08e6ddd844 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Mon, 29 Apr 2024 21:35:44 +0200 Subject: [PATCH 01/21] added faster, always working and better Histogram plot --- src/safeds/data/tabular/containers/_table.py | 78 ++++++++++++++++---- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 672cfaa2b..4c877cd2b 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2177,10 +2177,15 @@ def plot_boxplots(self) -> Image: buffer.seek(0) return Image.from_bytes(buffer.read()) - def plot_histograms(self) -> Image: + def plot_histograms(self, n_bins : int = 10) -> Image: """ Plot a histogram for every column. + Parameters + ---------- + n_bins : int + The number of bins to use in the histogram. Default is 10. + Returns ------- plot: Image @@ -2193,23 +2198,64 @@ def plot_histograms(self) -> Image: >>> image = table.plot_histograms() """ import matplotlib.pyplot as plt - import pandas as pd - import seaborn as sns - col_wrap = min(self.number_of_columns, 3) - - data = pd.melt(self._data.map(lambda value: str(value)), value_vars=self.column_names) - grid = sns.FacetGrid(data=data, col="variable", col_wrap=col_wrap, sharex=False, sharey=False) - grid.map(sns.histplot, "value") - grid.set_xlabels("") - grid.set_ylabels("") - grid.set_titles("{col_name}") - for axes in grid.axes.flat: - axes.set_xticks(axes.get_xticks()) - axes.set_xticklabels(axes.get_xticklabels(), rotation=45, horizontalalignment="right") - grid.tight_layout() - fig = grid.fig + n_cols = min(3, len(self.column_names)) + n_rows = 1 if n_cols < 3 else len(self.column_names) // n_cols + if len(self.column_names) == 1: + one_col = True + fig, ax = plt.subplots() + fig.set_size_inches(3, 3) + else: + one_col = False + fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True) + fig.set_size_inches(n_cols * 3, n_rows * 3) + + col_names = self.column_names + for col in col_names: + if not one_col: + ax = axs.flatten()[col_names.index(col)] + + np_col = np.array(self.get_column(col)) + bins = len(pd.unique(np_col)) + + if bins > n_bins: # keep the number of bins if it is less than n_bins (default=10) + bins = n_bins + + ax.set_title(col) + ax.set_xlabel("") + ax.set_ylabel("") + + if self.get_column(col).all(lambda x: type(x) != str): + np_col = np_col[~np.isnan(np_col)] + min_val = np.min(np_col) + max_val = np.max(np_col) + + if bins < len(pd.unique(np_col)): # if the number of unique values is greater than the number of bins + n, bin_edges = np.histogram(self.get_column(col), bins, range=(min_val, max_val)) + + bars = np.array([]) + for i in range(len(n)): + bars = np.append(bars, f'{round(bin_edges[i], 2)}-{round(bin_edges[i+1], 2)}') + + ax.bar(bars, n) + ax.set_xticks(np.arange(len(n)), bars, rotation=45, horizontalalignment="right") + else: + unique_values = np.unique(np_col) + n = np.array([np.sum(np_col == value) for value in unique_values]) + unique_values_str = [str(i) for i in unique_values] + ax.bar(unique_values_str, n) + ax.set_xticks(np.arange(len(unique_values_str)), unique_values_str, rotation=45, horizontalalignment="right") + else: + unique_values = np.unique(np_col) + n = np.array([np.sum(np_col == value) for value in unique_values]) + ax.bar(unique_values, n) + ax.set_xticks(np.arange(len(unique_values)), unique_values, rotation=45, horizontalalignment="right") + + # remove empty subplots + for i in range(len(col_names), n_rows * n_cols): + fig.delaxes(axs[i // n_cols, i % n_cols]) + buffer = io.BytesIO() fig.savefig(buffer, format="png") plt.close() From 36b3b262d07db88c339a45121af983b0a606c42b Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Mon, 29 Apr 2024 22:28:49 +0200 Subject: [PATCH 02/21] added support for columns out of Booleans fixed bug where not all rows are plottet --- src/safeds/data/tabular/containers/_table.py | 34 +++++++------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 4c877cd2b..4b58ebb66 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2200,38 +2200,28 @@ def plot_histograms(self, n_bins : int = 10) -> Image: import matplotlib.pyplot as plt n_cols = min(3, len(self.column_names)) - n_rows = 1 if n_cols < 3 else len(self.column_names) // n_cols + n_rows = (len(self.column_names) + n_cols - 1) // n_cols # Calculate the number of rows dynamically - if len(self.column_names) == 1: - one_col = True - fig, ax = plt.subplots() - fig.set_size_inches(3, 3) - else: - one_col = False - fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True) - fig.set_size_inches(n_cols * 3, n_rows * 3) + fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) col_names = self.column_names - for col in col_names: - if not one_col: - ax = axs.flatten()[col_names.index(col)] - + for col, ax in zip(col_names, axs.flatten()): np_col = np.array(self.get_column(col)) bins = len(pd.unique(np_col)) - - if bins > n_bins: # keep the number of bins if it is less than n_bins (default=10) + + if bins > n_bins: bins = n_bins - + ax.set_title(col) ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: type(x) != str): + if self.get_column(col).all(lambda x: type(x) != str and not isinstance(x, bool)): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) - if bins < len(pd.unique(np_col)): # if the number of unique values is greater than the number of bins + if bins < len(pd.unique(np_col)): n, bin_edges = np.histogram(self.get_column(col), bins, range=(min_val, max_val)) bars = np.array([]) @@ -2239,7 +2229,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: bars = np.append(bars, f'{round(bin_edges[i], 2)}-{round(bin_edges[i+1], 2)}') ax.bar(bars, n) - ax.set_xticks(np.arange(len(n)), bars, rotation=45, horizontalalignment="right") + ax.set_xticks(np.arange(len(n)), bars, rotation=45, horizontalalignment="right") else: unique_values = np.unique(np_col) n = np.array([np.sum(np_col == value) for value in unique_values]) @@ -2247,15 +2237,15 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.bar(unique_values_str, n) ax.set_xticks(np.arange(len(unique_values_str)), unique_values_str, rotation=45, horizontalalignment="right") else: + np_col = np_col.astype(str) unique_values = np.unique(np_col) n = np.array([np.sum(np_col == value) for value in unique_values]) ax.bar(unique_values, n) ax.set_xticks(np.arange(len(unique_values)), unique_values, rotation=45, horizontalalignment="right") - # remove empty subplots for i in range(len(col_names), n_rows * n_cols): - fig.delaxes(axs[i // n_cols, i % n_cols]) - + fig.delaxes(axs.flatten()[i]) # Remove empty subplots + buffer = io.BytesIO() fig.savefig(buffer, format="png") plt.close() From 1e67b462a699f0c96b1ff7fbe23179d8c72adc2c Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 12:53:47 +0200 Subject: [PATCH 03/21] added abilety to handel single column Tables --- src/safeds/data/tabular/containers/_table.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 4b58ebb66..1950c3bd8 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2202,10 +2202,15 @@ def plot_histograms(self, n_bins : int = 10) -> Image: n_cols = min(3, len(self.column_names)) n_rows = (len(self.column_names) + n_cols - 1) // n_cols # Calculate the number of rows dynamically - fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) + if n_cols == 1 and n_rows == 1: + oneCol = True + fig, axs = plt.subplots(1, 1, tight_layout=True, figsize=(3, 3)) + else: + oneCol = False + fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) col_names = self.column_names - for col, ax in zip(col_names, axs.flatten()): + for col, ax in zip(col_names, axs.flatten() if not oneCol else [axs]): np_col = np.array(self.get_column(col)) bins = len(pd.unique(np_col)) From c9d5fd01ef5d08b47af0cb04440e5ba5d987192e Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 12:58:29 +0200 Subject: [PATCH 04/21] added new Histogram Plots for the tests --- ...st_should_match_snapshot[four columns].png | Bin 21323 -> 21098 bytes ...test_should_match_snapshot[one column].png | Bin 5980 -> 5971 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[four columns].png b/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[four columns].png index 2218cd6a0592d4e63a4006f0f686c035cb859b4e..c9e9b4ebd6d5653a51f9480967470a341b8ec89b 100644 GIT binary patch literal 21098 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

AInU&j`Vz8KYJPL!B?;OAMFa6;yr<^Bdrdt|v z!b+6YqP^&RxPZNt91Tf-w>Vs%fqmo!Ii0KRwwggvQ?q5!*eVHNw}6XUS^~qr(3}6L z1IRH#-+ei@PyH%mjk;yO_YTLx-I1KZ;m>tSps}c%b$nYU?)SKHEF!MTP}e#@s7*pJ zB&p-9^ySODiQE%%t5$aDu3fv*aGegt$ot{%-@m_;*k-}oZo#{JBpXMKGdp*EzQ8Hd zP6xH!5NOzI5Gs{Ulwfo*Fx}>AS4zeD!l($n}!bu4Uckqf#Gr87WY-~jbXYY${ zFIz1*9g?h7sD~RmStvLg>O9k{0m$fclX9&}xgj~FL{o|W{*HCCZ#_tsGrr%TmFU7c}GYwgy-0~bLSyYSvf#U4Q5pE<$h0T)s{X4;ojoRuA24h)^Wc4 zj2xUZI6{u^60ce8NY%0^Kf|eL?LU>ITs#QsB?K9GI=Z~W>U0|Mwo zPM*|-3SlKWPjd%RX(*J3Pk-&qEMWT0?gBT+X=t+iBp>dx0}6!Ei+WP13{EeY&Yq_m?%y&Hra%y4zbc}p^@^6Wfkl%d-on=xuT0^SxGk61!2RX9j`e*XA(DZQ zFI%^1Q*>?ZxsvSSc3EBB7?0a7%lXWQZZJuH>bIAz>Vf7Xb-VS?x1BP<6DWoMfYALD zgiIc?xp6<^Tg>@eGYqmDxvu13p7Wd&;9v~)hKSXwwG?xzB52^_;}h{Ykk7uOgnkvT z%@0k)ajg%H3oG@!50hL-#I(f}VN(WB07RqvGhPCrj!Y#>_yGtv1a)8j`0xUuRw$~Z z)7By#C|2bKjzMuTq;{si2_tH||Gk4c9EDh6If_Ni*LL^vQbL2E1Bxn*ZygrpDzwd( z18;!|*x8E@((_up?AZF#~=R2&&vBW!k&6jTCP(d?y?$cv#NyGZ|DpJ4+#}7UXL|SeOFN6^^s7X3a zttKR?sipseMI`xQ{}vpv>_^e|*EQ<)XV8>Ypnb23k=aF#T%%_00aehs%<>l@2WeC( zsow)6Z5{d=!een8H>r8kZrc`*K+$h_X?l1Mwj0Y

0cHg9)FPY0*8@ykvAx21yP) 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 From 7af11261417b2beaf6743d640014b9d766e2b37b Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 13:18:43 +0200 Subject: [PATCH 05/21] added numpy and pandas import --- src/safeds/data/tabular/containers/_table.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 1950c3bd8..96f7bed5f 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2198,6 +2198,8 @@ def plot_histograms(self, n_bins : int = 10) -> Image: >>> image = table.plot_histograms() """ import matplotlib.pyplot as plt + import numpy as np + import pandas as pd n_cols = min(3, len(self.column_names)) n_rows = (len(self.column_names) + n_cols - 1) // n_cols # Calculate the number of rows dynamically From fdcd6a722eccacca3c83db5c2fdeff646cc6499f Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 13:27:21 +0200 Subject: [PATCH 06/21] corrected name and reqrite isinstance() with typecheck --- src/safeds/data/tabular/containers/_table.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 96f7bed5f..f56e20e11 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2205,14 +2205,14 @@ def plot_histograms(self, n_bins : int = 10) -> Image: n_rows = (len(self.column_names) + n_cols - 1) // n_cols # Calculate the number of rows dynamically if n_cols == 1 and n_rows == 1: - oneCol = True + one_col = True fig, axs = plt.subplots(1, 1, tight_layout=True, figsize=(3, 3)) else: - oneCol = False + one_col = False fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) col_names = self.column_names - for col, ax in zip(col_names, axs.flatten() if not oneCol else [axs]): + for col, ax in zip(col_names, axs.flatten() if not one_col else [axs]): np_col = np.array(self.get_column(col)) bins = len(pd.unique(np_col)) @@ -2223,7 +2223,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: type(x) != str and not isinstance(x, bool)): + if self.get_column(col).all(lambda x: type(x) != str and type(x) != bool): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) From 4e47678f683e91ca12896768344be56a5cd5f9b5 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 13:40:14 +0200 Subject: [PATCH 07/21] changed some comments --- src/safeds/data/tabular/containers/_table.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index f56e20e11..23874b63e 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2202,7 +2202,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: import pandas as pd n_cols = min(3, len(self.column_names)) - n_rows = (len(self.column_names) + n_cols - 1) // n_cols # Calculate the number of rows dynamically + n_rows = (len(self.column_names) + n_cols - 1) // n_cols if n_cols == 1 and n_rows == 1: one_col = True @@ -2255,7 +2255,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: buffer = io.BytesIO() fig.savefig(buffer, format="png") - plt.close() + plt.close() # Prevents the figure from being displayed directly buffer.seek(0) return Image.from_bytes(buffer.read()) From 846cb9484ccf26d22873682002aee891edde2526 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 13:56:07 +0200 Subject: [PATCH 08/21] changed typecheck to single isinstance() --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 23874b63e..102536865 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2223,7 +2223,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: type(x) != str and type(x) != bool): + if self.get_column(col).all(lambda x: not isinstance(x, str, bool)): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) From c8aded76822301a51dde1c18f3f85188e1811506 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 13:56:43 +0200 Subject: [PATCH 09/21] added forgotten bracket --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 102536865..faf02a6b1 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2223,7 +2223,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: not isinstance(x, str, bool)): + if self.get_column(col).all(lambda x: not isinstance(x, (str, bool))): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) From 2b1f6658c2856dbd529649a869bc510bbf611217 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 14:22:04 +0200 Subject: [PATCH 10/21] changed "," with "|" in isinstance() --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index faf02a6b1..c5b28e67a 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2223,7 +2223,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: not isinstance(x, (str, bool))): + if self.get_column(col).all(lambda x: not isinstance(x, (str | bool))): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) From d711d0a8dc95d2b1c394c25124f2ea827ae7e628 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 15:49:04 +0200 Subject: [PATCH 11/21] added new case for Test plot_histograms() - now also tests more than 10 unique numerical and string values --- ...o columns with compressed visualization].png | Bin 0 -> 19002 bytes .../containers/_table/test_plot_histograms.py | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[two columns with compressed visualization].png diff --git a/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[two columns with compressed visualization].png b/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[two columns with compressed visualization].png new file mode 100644 index 0000000000000000000000000000000000000000..a483e0df0ab280a1865e55f96979dfff435301da GIT binary patch literal 19002 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_table/test_plot_histograms.py b/tests/safeds/data/tabular/containers/_table/test_plot_histograms.py index 2a63f5f8d..93b28647d 100644 --- a/tests/safeds/data/tabular/containers/_table/test_plot_histograms.py +++ b/tests/safeds/data/tabular/containers/_table/test_plot_histograms.py @@ -15,8 +15,14 @@ "D": [1.0, 2.1, 2.1, 2.1, 2.1, 3.0, 3.0], }, ), + Table( + { + "A": [3.8, 1.8, 3.2, 2.2, 1.0, 2.4, 3.5, 3.9, 1.9, 4.0, 1.4, 4.2, 4.5, 4.5, 1.4, 2.5, 2.8, 2.8, 1.9, 4.3], + "B": ["a", "b", "b", "c", "d", "f", "a", "f", "e", "a", "b", "b", "k", "j", "b", "i", "h", "g", "g", "a"], + } + ), ], - ids=["one column", "four columns"], + ids=["one column", "four columns", "two columns with compressed visualization"], ) def test_should_match_snapshot(table: Table, snapshot_png_image: SnapshotAssertion) -> None: histograms = table.plot_histograms() From 6ec63a26b1cb60905690dfe64371e07ba1e0535b Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:09:09 +0200 Subject: [PATCH 12/21] Update src/safeds/data/tabular/containers/_table.py shortening internal number of bin selection Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index c5b28e67a..f5f27d4c0 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2214,10 +2214,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: col_names = self.column_names for col, ax in zip(col_names, axs.flatten() if not one_col else [axs]): np_col = np.array(self.get_column(col)) - bins = len(pd.unique(np_col)) - - if bins > n_bins: - bins = n_bins + bins = min(n_bins, len(pd.unique(np_col))) ax.set_title(col) ax.set_xlabel("") From c67ec0e5dc082e9fcab3afb025909a35a0ac9bd3 Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:17:42 +0200 Subject: [PATCH 13/21] Update src/safeds/data/tabular/containers/_table.py using internal funktion to get number of columns Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index f5f27d4c0..4b555e064 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2202,7 +2202,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: import pandas as pd n_cols = min(3, len(self.column_names)) - n_rows = (len(self.column_names) + n_cols - 1) // n_cols + n_rows = 1 + (self.number_of_columns - 1) // n_cols if n_cols == 1 and n_rows == 1: one_col = True From 4f7ce9a0fe1f53c4ebf1cdb2364f6e0b35e635e9 Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:23:15 +0200 Subject: [PATCH 14/21] Update src/safeds/data/tabular/containers/_table.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 4b555e064..bc0b67af8 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2201,7 +2201,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: import numpy as np import pandas as pd - n_cols = min(3, len(self.column_names)) + n_cols = min(3, self.number_of_columns) n_rows = 1 + (self.number_of_columns - 1) // n_cols if n_cols == 1 and n_rows == 1: From 209cfe3440919e289d735da90304b08cbd1f1143 Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:23:44 +0200 Subject: [PATCH 15/21] Update src/safeds/data/tabular/containers/_table.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index bc0b67af8..a62271543 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2183,7 +2183,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: Parameters ---------- - n_bins : int + n_bins: The number of bins to use in the histogram. Default is 10. Returns From 988da85db3d210f844896e466ba733c8d43a531b Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:43:51 +0200 Subject: [PATCH 16/21] Update src/safeds/data/tabular/containers/_table.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index a62271543..c0e2e7433 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2220,7 +2220,7 @@ def plot_histograms(self, n_bins : int = 10) -> Image: ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).all(lambda x: not isinstance(x, (str | bool))): + if self.get_column(col).type.is_numeric(): np_col = np_col[~np.isnan(np_col)] min_val = np.min(np_col) max_val = np.max(np_col) From fc63775418792418fe2984fd8dee210e032349da Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 21:44:48 +0200 Subject: [PATCH 17/21] Update src/safeds/data/tabular/containers/_table.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index c0e2e7433..739380d31 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2204,12 +2204,8 @@ def plot_histograms(self, n_bins : int = 10) -> Image: n_cols = min(3, self.number_of_columns) n_rows = 1 + (self.number_of_columns - 1) // n_cols - if n_cols == 1 and n_rows == 1: - one_col = True - fig, axs = plt.subplots(1, 1, tight_layout=True, figsize=(3, 3)) - else: - one_col = False - fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) + one_col = n_cols == 1 and n_rows == 1 + fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) col_names = self.column_names for col, ax in zip(col_names, axs.flatten() if not one_col else [axs]): From 13c2ecbe39419048faccb05d92405887aa09133b Mon Sep 17 00:00:00 2001 From: Saman Hushalsadat Date: Tue, 30 Apr 2024 22:35:29 +0200 Subject: [PATCH 18/21] Update src/safeds/data/tabular/containers/_table.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/containers/_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 739380d31..620c2ff88 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2177,7 +2177,7 @@ def plot_boxplots(self) -> Image: buffer.seek(0) return Image.from_bytes(buffer.read()) - def plot_histograms(self, n_bins : int = 10) -> Image: + def plot_histograms(self, *, number_of_bins : int = 10) -> Image: """ Plot a histogram for every column. From e4270bfd891f870ff9a4002089504b6c6ca885da Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 22:47:18 +0200 Subject: [PATCH 19/21] implemented changes form comments --- src/safeds/data/tabular/containers/_table.py | 45 +++++++++----------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 620c2ff88..1214c0b26 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2183,12 +2183,12 @@ def plot_histograms(self, *, number_of_bins : int = 10) -> Image: Parameters ---------- - n_bins: + number_of_bins: The number of bins to use in the histogram. Default is 10. Returns ------- - plot: Image + plot: The plot as an image. Examples @@ -2208,40 +2208,35 @@ def plot_histograms(self, *, number_of_bins : int = 10) -> Image: fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) col_names = self.column_names - for col, ax in zip(col_names, axs.flatten() if not one_col else [axs]): - np_col = np.array(self.get_column(col)) - bins = min(n_bins, len(pd.unique(np_col))) + for col_name, ax in zip(col_names, axs.flatten() if not one_col else [axs]): + np_col = np.array(self.get_column(col_name)) + bins = min(number_of_bins, len(pd.unique(np_col))) - ax.set_title(col) + ax.set_title(col_name) ax.set_xlabel("") ax.set_ylabel("") - if self.get_column(col).type.is_numeric(): + if self.get_column(col_name).type.is_numeric(): np_col = np_col[~np.isnan(np_col)] - min_val = np.min(np_col) - max_val = np.max(np_col) if bins < len(pd.unique(np_col)): - n, bin_edges = np.histogram(self.get_column(col), bins, range=(min_val, max_val)) + min_val = np.min(np_col) + max_val = np.max(np_col) + hist, bin_edges = np.histogram(self.get_column(col_name), bins, range=(min_val, max_val)) bars = np.array([]) - for i in range(len(n)): + for i in range(len(hist)): bars = np.append(bars, f'{round(bin_edges[i], 2)}-{round(bin_edges[i+1], 2)}') - ax.bar(bars, n) - ax.set_xticks(np.arange(len(n)), bars, rotation=45, horizontalalignment="right") - else: - unique_values = np.unique(np_col) - n = np.array([np.sum(np_col == value) for value in unique_values]) - unique_values_str = [str(i) for i in unique_values] - ax.bar(unique_values_str, n) - ax.set_xticks(np.arange(len(unique_values_str)), unique_values_str, rotation=45, horizontalalignment="right") - else: - np_col = np_col.astype(str) - unique_values = np.unique(np_col) - n = np.array([np.sum(np_col == value) for value in unique_values]) - ax.bar(unique_values, n) - ax.set_xticks(np.arange(len(unique_values)), unique_values, rotation=45, horizontalalignment="right") + ax.bar(bars, hist) + ax.set_xticks(np.arange(len(hist)), bars, rotation=45, horizontalalignment="right") + continue + + np_col = np_col.astype(str) + unique_values = np.unique(np_col) + hist = np.array([np.sum(np_col == value) for value in unique_values]) + ax.bar(unique_values, hist) + ax.set_xticks(np.arange(len(unique_values)), unique_values, rotation=45, horizontalalignment="right") for i in range(len(col_names), n_rows * n_cols): fig.delaxes(axs.flatten()[i]) # Remove empty subplots From eb0cd111d6a45830d468223ebcb2955b81d9770f Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 22:51:37 +0200 Subject: [PATCH 20/21] added black outline for the bars in the plot --- src/safeds/data/tabular/containers/_table.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/safeds/data/tabular/containers/_table.py b/src/safeds/data/tabular/containers/_table.py index 1214c0b26..0cf48a470 100644 --- a/src/safeds/data/tabular/containers/_table.py +++ b/src/safeds/data/tabular/containers/_table.py @@ -2228,14 +2228,14 @@ def plot_histograms(self, *, number_of_bins : int = 10) -> Image: for i in range(len(hist)): bars = np.append(bars, f'{round(bin_edges[i], 2)}-{round(bin_edges[i+1], 2)}') - ax.bar(bars, hist) + ax.bar(bars, hist, edgecolor='black') ax.set_xticks(np.arange(len(hist)), bars, rotation=45, horizontalalignment="right") continue np_col = np_col.astype(str) unique_values = np.unique(np_col) hist = np.array([np.sum(np_col == value) for value in unique_values]) - ax.bar(unique_values, hist) + ax.bar(unique_values, hist, edgecolor='black') ax.set_xticks(np.arange(len(unique_values)), unique_values, rotation=45, horizontalalignment="right") for i in range(len(col_names), n_rows * n_cols): From 42e32576c01df795bae75a32d7056763437c05d8 Mon Sep 17 00:00:00 2001 From: Saman Hushi Date: Tue, 30 Apr 2024 23:04:12 +0200 Subject: [PATCH 21/21] updated images to comare test results --- ...st_should_match_snapshot[four columns].png | Bin 21098 -> 21847 bytes ...test_should_match_snapshot[one column].png | Bin 5971 -> 6094 bytes ...columns with compressed visualization].png | Bin 19002 -> 19559 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[four columns].png b/tests/safeds/data/tabular/containers/_table/__snapshots__/test_plot_histograms/test_should_match_snapshot[four columns].png index c9e9b4ebd6d5653a51f9480967470a341b8ec89b..58d38d3b501c84566bb6e7850e5b1f506c7f5cc0 100644 GIT binary patch literal 21847 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%0A}=f#g} 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 ZHX0FpV?KXw0M6+V3UaEld3Vg7{ulIsr27B> literal 5971 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%0DnLaDKeI`9q(wZPFGJRly7Mto!%x|Ni|uEAu&r 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 IcV82cahVPlaP??l9QEE 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