From a5cdb4c55f5feefae30288eae24ac85aeb4c5d9e Mon Sep 17 00:00:00 2001 From: Sardar <160326696+saius02@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:32:29 +0200 Subject: [PATCH 01/17] zwischenstand --- .../data/tabular/plotting/_column_plotter.py | 56 ++++++++++++++++-- .../data/tabular/plotting/_table_plotter.py | 32 ++++++++-- ...channel-png-grayscale-some noise-cuda].png | Bin 340 -> 0 bytes ...test_should_match_snapshot_dark[empty].png | Bin 0 -> 6779 bytes ...uld_match_snapshot_dark[multiple rows].png | Bin 0 -> 7368 bytes ...st_should_match_snapshot_dark[one row].png | Bin 0 -> 6868 bytes .../containers/_column/test_plot_box_plot.py | 20 +++++++ 7 files changed, 100 insertions(+), 8 deletions(-) delete mode 100644 tests/safeds/data/image/containers/__snapshots__/test_image/TestAddNoise.test_should_add_noise[opaque-1-channel-png-grayscale-some noise-cuda].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot_dark[empty].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot_dark[multiple rows].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot_dark[one row].png diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index f47dc8003..8e14efa1d 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal from safeds._utils import _figure_to_image from safeds._validation._check_columns_are_numeric import _check_column_is_numeric @@ -29,7 +29,7 @@ class ColumnPlotter: def __init__(self, column: Column): self._column: Column = column - def box_plot(self) -> Image: + def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a box plot for the values in the column. This is only possible for numeric columns. @@ -53,6 +53,18 @@ def box_plot(self) -> Image: _check_column_is_numeric(self._column, operation="create a box plot") import matplotlib.pyplot as plt + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") + fig, ax = plt.subplots() ax.boxplot( @@ -67,7 +79,7 @@ def box_plot(self) -> Image: return _figure_to_image(fig) - def histogram(self, *, max_bin_count: int = 10) -> Image: + def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: """ Create a histogram for the values in the column. @@ -87,9 +99,22 @@ def histogram(self, *, max_bin_count: int = 10) -> Image: >>> column = Column("test", [1, 2, 3]) >>> histogram = column.plot.histogram() """ + import matplotlib.pyplot as plt + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) - def lag_plot(self, lag: int) -> Image: + + def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a lag plot for the values in the column. @@ -114,6 +139,29 @@ def lag_plot(self, lag: int) -> Image: >>> column = Column("values", [1, 2, 3, 4]) >>> image = column.plot.lag_plot(2) """ + import matplotlib.pyplot as plt + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") if self._column.row_count > 0: _check_column_is_numeric(self._column, operation="create a lag plot") diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index f46faa3d7..97d4a52a2 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -1,7 +1,7 @@ from __future__ import annotations import warnings -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal from safeds._utils import _figure_to_image from safeds._validation import _check_columns_exist @@ -32,7 +32,7 @@ class TablePlotter: def __init__(self, table: Table): self._table: Table = table - def box_plots(self) -> Image: + def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a box plot for every numerical column. @@ -59,6 +59,18 @@ def box_plots(self) -> Image: import matplotlib.pyplot as plt + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") + columns = numerical_table.to_columns() columns = [column._series.drop_nulls() for column in columns] max_width = 3 @@ -102,7 +114,7 @@ def box_plots(self) -> Image: fig.tight_layout() return _figure_to_image(fig) - def correlation_heatmap(self) -> Image: + def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Plot a correlation heatmap for all numerical columns of this `Table`. @@ -122,6 +134,18 @@ def correlation_heatmap(self) -> Image: import matplotlib.pyplot as plt import numpy as np + if theme == "dark": + plt.style.use("dark_background") + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + else: + plt.style.use("default") + only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) if self._table.row_count == 0: @@ -154,7 +178,7 @@ def correlation_heatmap(self) -> Image: return _figure_to_image(fig) - def histograms(self, *, max_bin_count: int = 10) -> Image: + def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: """ Plot a histogram for every column. diff --git a/tests/safeds/data/image/containers/__snapshots__/test_image/TestAddNoise.test_should_add_noise[opaque-1-channel-png-grayscale-some noise-cuda].png b/tests/safeds/data/image/containers/__snapshots__/test_image/TestAddNoise.test_should_add_noise[opaque-1-channel-png-grayscale-some noise-cuda].png deleted file mode 100644 index 32967f5fa61357b255575310a72cb1f63a3f8793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 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 W!xYuP08gu+ufKG*ul?f2oxcJ^N2f&q literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py index fbfbd21ad..6b99cbb50 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py @@ -26,3 +26,23 @@ def test_should_raise_if_column_contains_non_numerical_values() -> None: column = Column("a", ["A", "B", "C"]) with pytest.raises(ColumnTypeError): column.plot.box_plot() + + +@pytest.mark.parametrize( + "column", + [ + Column("a", []), + Column("a", [0]), + Column("a", [0, 1]), + ], + ids=[ + "empty", + "one row", + "multiple rows", + ], +) + +def test_should_match_snapshot_dark(column: Column, snapshot_png_image: SnapshotAssertion) -> None: + box_plot = column.plot.box_plot(theme="dark") + assert box_plot == snapshot_png_image + From 3ed5e931abd725c5d2e7e43aa16854910a732c96 Mon Sep 17 00:00:00 2001 From: Sardar <160326696+saius02@users.noreply.github.com> Date: Fri, 12 Jul 2024 15:03:25 +0200 Subject: [PATCH 02/17] colum_plotter darkmode zwischenstand --- .../data/tabular/plotting/_column_plotter.py | 185 ++++++++++-------- .../data/tabular/plotting/_table_plotter.py | 36 +--- .../test_should_match_snapshot[empty].png | Bin 7238 -> 7078 bytes ...t_should_match_snapshot[multiple rows].png | Bin 7655 -> 7198 bytes .../test_should_match_snapshot[one row].png | Bin 7355 -> 7207 bytes ...test_should_match_snapshot_dark[empty].png | Bin 6779 -> 6769 bytes ...uld_match_snapshot_dark[multiple rows].png | Bin 7368 -> 7135 bytes ...st_should_match_snapshot_dark[one row].png | Bin 6868 -> 6913 bytes ...test_should_match_snapshot_dark[empty].png | Bin 0 -> 6614 bytes ...snapshot_dark[multiple rows (numeric)].png | Bin 0 -> 7149 bytes ...hould_match_snapshot_dark[non-numeric].png | Bin 0 -> 7620 bytes ...match_snapshot_dark[one row (numeric)].png | Bin 0 -> 6853 bytes ...test_should_match_snapshot_dark[empty].png | Bin 0 -> 10130 bytes ...uld_match_snapshot_dark[multiple rows].png | Bin 0 -> 10430 bytes ...st_should_match_snapshot_dark[one row].png | Bin 0 -> 10130 bytes .../containers/_column/test_plot_histogram.py | 21 ++ .../containers/_column/test_plot_lag_plot.py | 17 ++ .../test_should_match_snapshot[normal].png | Bin 12835 -> 12875 bytes 18 files changed, 152 insertions(+), 107 deletions(-) create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[empty].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[multiple rows (numeric)].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[non-numeric].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[one row (numeric)].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_lag_plot/test_should_match_snapshot_dark[empty].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_lag_plot/test_should_match_snapshot_dark[multiple rows].png create mode 100644 tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_lag_plot/test_should_match_snapshot_dark[one row].png diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 8e14efa1d..8efdbfa0a 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -53,31 +53,71 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: _check_column_is_numeric(self._column, operation="create a box plot") import matplotlib.pyplot as plt - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - - - fig, ax = plt.subplots() - ax.boxplot( - self._column._series.drop_nulls(), - patch_artist=True, - ) - - ax.set(title=self._column.name) - ax.set_xticks([]) - ax.yaxis.grid(visible=True) - fig.tight_layout() - - return _figure_to_image(fig) + + def _set_boxplot_colors(box, theme): + if theme == "dark": + for median in box["medians"]: + median.set(color="orange", linewidth=1.5) + + for box_part in box["boxes"]: + box_part.set(color="white", linewidth=1.5, facecolor="cyan") + + for whisker in box["whiskers"]: + whisker.set(color="white", linewidth=1.5) + + for cap in box["caps"]: + cap.set(color="white", linewidth=1.5) + + for flier in box["fliers"]: + flier.set(marker="o", color="white", alpha=0.5) + else: + for median in box["medians"]: + median.set(color="orange", linewidth=1.5) + + for box_part in box["boxes"]: + box_part.set(color="black", linewidth=1.5, facecolor="blue") + + for whisker in box["whiskers"]: + whisker.set(color="black", linewidth=1.5) + + for cap in box["caps"]: + cap.set(color="black", linewidth=1.5) + + for flier in box["fliers"]: + flier.set(marker="o", color="black", alpha=0.5) + + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + "grid.color": "gray", + "grid.linewidth": 0.5, + }) + else: + plt.rcParams.update({ + "grid.linewidth": 0.5, + }) + + fig, ax = plt.subplots() + box = ax.boxplot( + self._column._series.drop_nulls(), + patch_artist=True, + ) + + _set_boxplot_colors(box, theme) + + ax.set(title=self._column.name) + ax.set_xticks([]) + ax.yaxis.grid(visible=True) + fig.tight_layout() + + return _figure_to_image(fig) + def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: """ @@ -87,6 +127,8 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] ---------- max_bin_count: The maximum number of bins to use in the histogram. Default is 10. + theme: + The theme for the plot, either "dark" or "light". Default is "light" Returns ------- @@ -95,23 +137,24 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] Examples -------- - >>> from safeds.data.tabular.containers import Column + from safeds.data.tabular.containers import Column >>> column = Column("test", [1, 2, 3]) >>> histogram = column.plot.histogram() """ import matplotlib.pyplot as plt - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) + + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) + def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Image: @@ -140,43 +183,31 @@ def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Im >>> image = column.plot.lag_plot(2) """ import matplotlib.pyplot as plt - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - if self._column.row_count > 0: - _check_column_is_numeric(self._column, operation="create a lag plot") - - import matplotlib.pyplot as plt - fig, ax = plt.subplots() - series = self._column._series - ax.scatter( - x=series.slice(0, max(len(self._column) - lag, 0)), - y=series.slice(lag), - ) - ax.set( - xlabel="y(t)", - ylabel=f"y(t + {lag})", - ) - fig.tight_layout() - - return _figure_to_image(fig) + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + + if self._column.row_count > 0: + _check_column_is_numeric(self._column, operation="create a lag plot") + + fig, ax = plt.subplots() + series = self._column._series + ax.scatter( + x=series.slice(0, max(len(self._column) - lag, 0)), + y=series.slice(lag), + ) + ax.set( + xlabel="y(t)", + ylabel=f"y(t + {lag})", + ) + fig.tight_layout() + + return _figure_to_image(fig) \ No newline at end of file diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 97d4a52a2..1483cc19a 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -1,7 +1,7 @@ from __future__ import annotations import warnings -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING from safeds._utils import _figure_to_image from safeds._validation import _check_columns_exist @@ -32,7 +32,7 @@ class TablePlotter: def __init__(self, table: Table): self._table: Table = table - def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: + def box_plots(self) -> Image: """ Create a box plot for every numerical column. @@ -59,18 +59,6 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: import matplotlib.pyplot as plt - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - columns = numerical_table.to_columns() columns = [column._series.drop_nulls() for column in columns] max_width = 3 @@ -114,7 +102,7 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: fig.tight_layout() return _figure_to_image(fig) - def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> Image: + def correlation_heatmap(self) -> Image: """ Plot a correlation heatmap for all numerical columns of this `Table`. @@ -134,18 +122,6 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I import matplotlib.pyplot as plt import numpy as np - if theme == "dark": - plt.style.use("dark_background") - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - else: - plt.style.use("default") - only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) if self._table.row_count == 0: @@ -170,7 +146,7 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I vmax=1, cmap="coolwarm", ) - ax.set_xticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) + ax.set_xticks(np.arange(len(only_numerical.columns)), rotation="vertical", labels=only_numerical.columns) ax.set_yticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) fig.colorbar(heatmap) @@ -178,7 +154,7 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I return _figure_to_image(fig) - def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: + def histograms(self, *, max_bin_count: int = 10) -> Image: """ Plot a histogram for every column. @@ -486,4 +462,4 @@ def _plot_validation(table: Table, x_name: str, y_names: list[str]) -> None: _check_columns_are_numeric(table, y_names) if not table.get_column(x_name).is_numeric and not table.get_column(x_name).is_temporal: - raise ColumnTypeError(x_name) + raise ColumnTypeError(x_name) \ No newline at end of file diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot[empty].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot[empty].png index f1f0e93bcb063aadecd7e670756b892527d699b9..5451c1ddfb80b2abb434d205fe97d87775a62aa1 100644 GIT binary patch literal 7078 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 aT01-N_7^GR>A?`VFvr}!F8}KMjeh`-{&$lA literal 7238 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 bTCSbjk{{$@>J$ut1M`*rm*rnv`}1D`phvWM diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot[multiple rows].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot[multiple rows].png index ef17a72d537e12a50b634f7cf2c6ec1d0255a269..ede1f8073ddf810c3593745f4d43b09ad48bd30e 100644 GIT binary patch literal 7198 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 b79v!2!^vxUftl_Q_&H?fY+L^Asqg;-dpP=s literal 7655 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 Dpf|ti diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot_dark[empty].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_box_plot/test_should_match_snapshot_dark[empty].png index 000594ee80758c9882f96b7d974e9aa11e0d06fd..a6303ecc5c9d50c0ab83f608cbafd0f638d9081d 100644 GIT binary patch literal 6769 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 J#djBP{TF_&aHaqN literal 6779 zcmd^^c~Fz*+Qwhpu(gO3E4#S06cLaeg%B$$6-8u`MV2U$C4^N30s(^UQ9zcQRsjWs zDrGB#$PyxJuwYVIWepG#kQmT}fME+E1imLdoik_VTV_t%=^x)=CV%k0;z(Kr z_Wn=&rXOgY3%GM}#;|A%WvD!5@W}i-b3?DRLtjLwMw^)obk}Q}DR$Kwr9QWtrUX3D zzONFgs-)juk z*I9!Rw$^7JK+u8o-gKc11eNN`?1cWF25p1BJ_l`qjvR($pzjsHYG3U<1ts3tb^tnM zxMdG?K;_^2vk_XxiRp){{7{^lK4tx8-0GX8zKIDsPHNx1dzUIsK6O)0!GS8?10{Xm zCJ(o)3mP@_3GT@|(Z^(JWP8V=EZ0A@v2PhB;zfv7NIZh0B9KU=dd%DJ1Vo%f$24SI z*~q^~opxU)?jp2h7MY}(fH~&XV9dg>(?=R2(M>`YR=URfTJ{;|?|+dl6hKX~d#)iG z*%=m7*a@-sI@gtQud=doq!#7$z|m*urz?W`UJ=&p_{O#atyXnmZ+>>G@;U1n&5R_G zii?X^DVt)7z+!JJ?t`mCVtkNzh2Qu3^>H7*EPVAVW79PYv#@I)5Qh`vXYFxoPM)#v zi>goq#hCX+*-x($sH6S`8WM@**Nxhf2#Lo{=$?uUawz_SUj32X@bwRFHGXz^@hhWM zvCCY6mFlT8t1xhC?=kZK*NF+R&}LgLYQQHfEUXDH1ATyBIhu(P^U3f5(v}a31I2c! z`T6+*s~u3Qcdk|Zn*Y61GOH<%;Ue%$L&26UkZi4O(WfvNtf1a~+ayj!U43sN)OxTx z=@j&5RL!4TgMY=-sJalbX`y4}*>&qr? zP@v_)FNec7B|@4jWo-zv@JfsQN~<7kWo5-{B_FpT3Lit2oVB;_-AGV{AX$Rr{QJ2% zz3B098-A3vwRH@SK<-$kBjDVPE9EYkQkAt|b#-;E=T$bItFX&8B{Yeqb2&fWzjRd1 zH0VpZXGFJmL78LO14r93=cAE0SegM<8EMs>M)KfpD7Jp2_(gk#d(G3DnwmNn+mxQ3 zo>G_cLT@L6i_I)P*{wNtIawknCntDqE&oyDND57rf$H=Mnl)k}1=SHtG=W}t} zA@j@WBvFFDlK z)~30IqEIO;7R!P7p3i5pH-H!L3?jLMK=o#ULNilSYA~6(55E3Jp8cGi!Qfz{Zry6H z_U#NL>txz4EiJV#y&ph^g?%uB!=Xe;us=D@B~rdMm{Ip~jD$wAnqmZlPWETpY4a1g zW})845G`?o=!S*{AL$()VzZ&n6t}Vdj?2B5oSd{jHegV=(`xCpwV-vYeA*f;DJcnw z!CHC0WM*kt+}a;X9LF`RGngfdXeZ@);`^xTUcK|y18Wsv^xOF-?zE%`0wi%e}z_m zZ!i1n*VgrX`(&o8w+hf?GN^=ib8{J^HU9JAn?K*#g_Nu<8yFk!3x9{3FIEM}j zN<*wqDOH6q8&)U3m48}NqUBQIreFgU@DEoga-4SuHZxl7d!c@Pp|dkZE8lIdekR}W z`0>ld7atjNHv&ml>w+0Bm5p-^{lmj9Ar0?~t0Q^C{VbOEp{K@XX4&vfQ7`9ds@_qp zys*hk~@j?Gy81@Lw zh5}8pbUjRcf|t2N;Txiv`IYc5>~i*kDoz$o z;BbRttxI{zc6N3oMy9QAyDOBqb;u1{G$(@@bg(%K$Y5!CIo)lZ$4dnob0DIEgEb;? zzj{$_PR7{QcV^^I40Jka^Df@2W0+Z%X*giuvwus?pOFCZWw zS*P;34_OS>cy8Uf%CYQ>y}kX#0;_m(-%cp(z{sd>!4>A#XA}zDYVBQN01Bm2#p>_> zw7I#t(0hQvXmk}vQzxou`_=p(M-K0|4#8l|?W zRaKRx=KQq7g#+HL<53r+ z4QhY`{E@&Et}pgx%kIZqYu~uDODQWGkx(BrT3yt%I+g1C;+yRxaRzKsB&2M5<>ch7aR0c) z424i6D+~?|z7fukiin7i3PA}G7vAjs^{>U-(B;-xWWWvj`EMT?poc5oy?a+m$aDmt zWAxJyx0LQ&KI8`SMlxxr+?6JpDbQ3ALslL8GgQ=2xnYN$D#>V=rExk7|H#g7F z+6s--JZ3Jq55XX@Sj+~^{$5sAmI6;#SGSMBu;7{ir@@X>7I`=v9^AmZxubMWlHb|8dYE#T&AR54&K`5&U;EU>V4sdG)@!><$y#)vc z<$Bv)%*^BHbF+XG4g7oZmnERl@?f#Yf*8lqL1^Oub4XOB&48-@ zeZ=Jr)rZMnx_U)kiQ$vz9l-o;0dJpJ9&|zrVVmoVoZGVdm8)=Xe!j!uWFz#XwW!~+ z>f`?G+6%pji1+@5Xn_#5suelHv6Tht~bbJ2y(&9IOb z(KOI|a(QJ#AP%kpl;%=K1JMNF$RiW9OE5n#qDLDfZ+$6HmC~g&MDQSI?b2_0R%eQ& zra9VbM@)B(@{ziTmL^N#ctim=?w?51`5O|s`&Td>$pw&0`H=MES9mqn)eVo1sz_<& zM8tGjY&XbNKGMJg?8F1h$#k6pu?-(cYGBZEj8Tq27PF0QfW1$v@|I5#2m~p&XSgw1 z;<4b?8Ne+e#8EKB2pX$JNwd{N2(iqiJY4WniAHW&CcyIj|EDlTRZrB=&{IU;p371{_0K>t$d7+ zbeqEGn}yVFvx#+hFSD;tp)*UjoLT97v~OTQaiGK=|Ki1q%@`QeiWwc%MLJ}g>CCO~ z`2_?&GylgZ;?e#Bn!v;B=otlnj)MEV?(AkQX!k$alKyk#Bd7 ziS$JhGZ>5uAh3#<^9in3uU-v|01P=KzGDm`R$5u7y0eUV%);C1o1Bj7n8oRZ4e@-o zc%DL02Ng~d;{n)6YXp!D!NkNQlhc`<4Mt7GxDPL6IRcudJ}_yLI22%(VUC=d>EJ&f z3qrT5mB>04n7wHzOTD|ho3#~W#Mjg@-3{Gqe_%NGA7?=S+fegS!;ZMuYH|!}v6_i8v!$Z39&Q zj}pON5C~!;_`=I6ZR35XnhLVyuXx0GGWCFnF?s>d=gA50)m5?d=oH>NC%txYsM<~ zG76t+$GrW{W=ab#IxihM35xXNQN$kU^?<;@pQO@1+_D8yFQty@Aa}QBWMn*lb60KU zc?p3KTp?dWqai2>@fDu+3r=3-f6Zg!cQ*iB6&uJ-O6NH8R;!cyg-vVRa=<-}oh8xo z7PHUH!3eF8OpYGp0aGe0E7Jx!(RivPQ7Sxi&q-c|IS4jLzzqrtU_!e`K>-Y2!xy{F z@TxHinn~>cJ`4)O_sT-oEcvrpRi&M|pG7C^yaDWjL=r8|%nv1<(tAGn&DhvST6xE( ztPdd8`m=38RRrr%))#;elst~Q`pD4NmdU#KkC;Oom1R0o+N>74jC}cHB;S?UQO?qU zy*`*L+PZ@V$KL=wGZVmgHkbj>hv%9Wdltsf#7v`J%bKpd6E&bxiowf|j5mm$^Zae@ za}WmRJ`M3Zj~tr%{(@c#@Elr1FHA|=ZUFdLR<^8h$0UkhTucVxcXfRRj_?ro;S-!0 zjKRUZ<*vjG9b!{;K5YkN{-bd_?emA;MUE-mxn?#I5j8^aErD!pRa7c&m-4^;wZQ)i z=P3?vk`MaFE+K?=Fw!_HntKV^+$eABmWa2IS+ zDp7eRW*z4lF=MdDDWcaNJ0_mhz$)<%l3pA$6{Z}*%Svf=eR_T7b*tx{oub+L^55KF zxc8?1+Q_x-S{kitDMw{v&72vv@4jLZ!zR`?4lY|oF)gZsD_<^#H~h)QS0#h-)W)N% z9+UB*;-G3L1RY2`y@G@wT#FSX4E^B{Bn16Q8dTY_;|zqmCVBumb3#}OIv^*s1G=98 zi9+Wr{;|uh&v0o3!jpi;)5@5+QdwnXymMV>+xiNV_QyTe&pFC%3T2FQNHPJ@44qtl&Gqs1O+evKA6AayFK~OJHurcu zyh;+|n#vZ}G9fXst!Zn6JyhWXub!$(x&N49l>vFzkGA z<`W~`u=z3cT9*s5DF>4LDZoMK`pjdGjM%$(@2a(%Y<#q_L}jycqKDh4j-c3wnfyNp z)_|VP&zl6L2A5Y=wL5sE@2d-C6$my9CMd%_#aX7uXz2$h^sjer2=*W#iZ`myEPCli zBPFgNB_?p(Fu^%4DF0Vyc(QOyso6YUrfp)vwSf#l`g3tvF@B?!O8pftb)o$lj(ayY zHdc@#(9iyO!};plam@}2xSpoPu(2EM;rpbZb2&%jX4q`gneAy6LfraSug-!V3557k zJHE7Mat{k}@nQ9c<{LN^@MJ=nI<0=G8`J00ZM5`us6IS60gorSfKK4{-ZQxzZx2Ce zX`Qc{larItGr!!Md~c?o+<+m9? zP<>2UvR$%!I3=9H;yfiruzcu;2u3I9L+N1@hfO}iG;?8TueoiqyMv6m?T3v-ZIUbs zznourTRvNIWOOt;FVCa1G*Lm1B%wEUkr0AQd2v1`=$uLz8qK|LwE4>|CtOTSt?0z- zJK`u;SJ%$c=;&zu^_gti^K5)vUteECiI=}Wz9yJq9f{oAc96O!b^KV;`JECH1DM3y z@87>y6^=H`)f7U1d!^WMUm=`GVR9GgU8rlMD@-z(uYEk}{M=a0NmW%x1Y%dm@et&O$ZFovxN27AsO0*3t*C22K)_SXe2pDG zJz{kjG=5!=52?K!g~jqO61Ug4D$d@QS5}tsX)dyR8MS@7{DXD;2WvwORaI+)kI(d3 z-pb#>x%Q>!duBmHe5xxrBfSCZgi17=+tz zyFyUS44-~XzX`|yZUL+DAFmDikb42+ymZf$|BIrMl7*&Z3KJ6f z7m(iXOQHVVM(=C_YW4Z(v|wFr&M8 z0HAQr(t&j|G&DIoJDUzp^w-4@BF1?wosG>KYrupJkBk_w*7iFEo;`iy#3f|lt8MhJ zjy%1X0UFR9bn)7|fXHA{kHcPb2LRK(<^wzh)Z6GEaxST5!t*cBHWIWCQ~Q6uUEl(y z0?`Su=M+OiLV^xjsVnI?+#0h9sJts9BSWpdaUn6_QPbuMaTjC1e}cA{j&QH69UFkX zpmEz+fB#;qWc65ZVF$|H!NSJI1`x6h<{dkdQ+KuOTE~>%ZRzyU^4!>*X&eqAc_`HVcZbNp$HgTEOfXJmMo}QjDxw*O3^kjtF zyEGjhHe-5vT8%BO9+x#TAOu}1Fo1TEz^IUeBg5T`u9m9KH*Ia|(;wMQk`w|Gv?4xQ z-C$LatugNk>~fE+{4Si1aw2Y6P7OHbSjkv;NcTAWzTdzMh_`t7)LBvZHYw z4&|N?IFLMQ_5?-5Ga;YTzhR8qvu96f_|h~O!Kp@ry}eRON=kqo3|Tr!=f4r0lv;ZR zKyZgo-boV^<=eM!+iiz%BJhWZW@l$-Km*!Q;zA`~ybM z4SEuQed}Ebg~_<%B{8O(3xtPNxTf_1A_@Gq`n4GZc^4iQs*c=P_w@5i^eL%1ETicp zyUT>@s*b2s51kv5mX>Y@9P#Ky-Rg)>wt81J_@Y(Q@bT$}VS;B&#=G#{GzNtrS5x`P zCeBYD=~+kJdNPc)qc*Wsx1(DMF6FoO_Fja+%FD}JKYa>J*Ap%SjltJ+{Q_z9m~=}E zl3JiriH3;!K=N>T71d#^8+m@ewF&5OYV)$IDAP`V6dk+fL{{9u7qx z>MWJkRzQklH%aUVo3|XTU~|toyPKsgAz{l$zvwS!A9D+x+wnrn|NkqS{b&3G|G%VLA>6p@nRnVMoLObs;B;BHMz-S69k>8>pv!&mvPG* z48>sL(v!5b$&@C(``l3Jp>ESHzCfAmvDQDBfnDryEE0j5+5SY!vN4$?FL_Kx>wjbIQdk)0OSC{cEIXB5lcS~me*C)xKeC~cLB5A-Nl7kPUh3KqSUrF zIZY|S({CRetv>F-=8jeRjhbZU)zs9e$GHW`XgE&EywKKqa6^1Z!xb?3g^DU%VdSg)>b4rfk0^I za?uq`Vdxor1p^&9eAsPi`W?_-+TlgN{BqF1z#yxtDs03jk~c~vspUQ04Ti(Rb|i0v zOagV~CYl0n$veCy=?aI#v6Fi;W8$?M^}*IDR*eN&3D}@EgsG~URaa+NQa4}Qu@q24 zPu8DKMSZ4ba{aWA zgbh%1SJ@%BW0#L5$;!*e#l$4X$d<4TwA7MfWN*#WfJBy6Ud6O02 zyAK^Y)JG=o2L?F3FGPjgECxt|+ee7JTnHS_5Ft&})x*Q%W=Kfe0Nh1M;9ZTDd(BF3 z&`4nHjk80JJPrH~OH-i6@aF4?GCmOWtq3qh$4jbJ8v(*etSYK9!DQXjDX8NcZ6hN^ zm5muo&PHqSbgNR>m^9ou#GcOzh$?K8hoHA-284$GuH<1a)e68}ifYGm0gg?x8GlPN zr6XcjU$~wPcclP3 z|0cRd8ib zAeVrW)L9F+-P=c{ssQB@wo_74InF-1G}?R8}8fvbc+(3k(wG~XJZ^P z!V$&)&p3s+qylmdG&m30yv)e;sWA+@q15X`uKvdI2U_M9-=pHV5CE`F&9*V1g~!Lo z7kJby6J_*7bTxmmD?2C0eKFY@ga^wUPP>3VfXQ3PGu`m&T(L1(y9R4TwhKYe8`4B4 zz~ZtiDs)O}rqixg2mWZpow!}{dBmuD- zIzJ{SEnQq(tZjsSM%}SV94cZG~7a(wW#wrkQB>#ITG&Ix#3^1pNm4O>1 zIgeJeUB-JA^!yVB2M4`+q8Nr$xiCt&M?KS-9k;r=%4L{t$u)7?wA}i#%>V4cuNX!| zM9_g(I$|2&>3Ouuf84ResV2yR-1GQk9u^q)&UnpQ&;Q1UT^>Da-z5C^iKS;o8?>Qd zaL!yf8SM>i2BtR2jmqLKF22uAU?TTk6uVnrmZuH1dvc&h<&r=5*!@-7Rcqr zrL3cp{y##vsRGGn?_#H#6DHhOyGVxAwQgAjg;7TMf0QvnJM=_TXYWuG!0ya**qS)A zA1U?W_NEs0oS%Wz>x_+!T?DDqlOX=;Xn+>GhLN#>~NxF0Zc6FV%wEmll8$I-RV6ka?mP5ZT9& zQ&Azjdi6>Th{#v@wci;U8g>Euyf_)JrMX`V=|s83ET)5f=|T~VD-&YM>gww1=WCgV zd$wNhZ@h@d?# zF&c=M95Qs z@r7QqU2UX91uz*xMwUiLM`?n@Vbs4)gR-2f*9L_C9^m$E>VK68c>d=kbmSxG3m~%% z*TTW!)`TzzgXo<}A2Omq4xgl;>zf)>R8>_~4^oQj{HNx&kK7%S&229?G-;C*-vG6_ z7@l-KXPzgETD(x9)GurA?d=`+ja71MnvTz5LXx|jv9WONUSy)&|ZhhA*&AvlD z)vfzi8*`}tFPdWvWdBBBTK5eO>eA5&1j3iv2uxRH05$Rq!xC2H@bY@6A1&)>R#TJd zd?RmOR#CBN@;HR-93;9#om1wlA)4;Z+8Yozg?M& zz>!Gnjo(-fhC0n_;oW8B2e4G95ck;Xc}LJUj|&rh^6vUufH( z62D(dGoWE*Fo-ihPA_d&Mp(dx$H$$KAZUHa0LPX>qtWR5;7+y~w`TL{_Hbu=d}3l! z0J=p%a@3|t7L}k)dOMhZR&3z<11qhDa_nU6kxo!k83@g=OHZgqYgApok;^5(&~}10 zjEY1Nl#U1p$xizfhJJ+B7 E4HlX&O#lD@ literal 7368 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 literal 6868 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 W!xYuP08gu+ufKG*ul?f2oxcJ^N2f&q diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[empty].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[empty].png new file mode 100644 index 0000000000000000000000000000000000000000..8b6fe63cb0bb62634b97b874bdd798027074c58b GIT binary patch literal 6614 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[multiple rows (numeric)].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[multiple rows (numeric)].png new file mode 100644 index 0000000000000000000000000000000000000000..47d5d759d47003376e8ac7eb852e565a1418121a GIT binary patch literal 7149 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 Z(O2T!2WTlM9{^v6ZH`+PeR}rG{|3eC1yuk5 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[non-numeric].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[non-numeric].png new file mode 100644 index 0000000000000000000000000000000000000000..880a17f19c1bffd61bf0358105cd729b952c9659 GIT binary patch literal 7620 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[one row (numeric)].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[one row (numeric)].png new file mode 100644 index 0000000000000000000000000000000000000000..c6d88d2dca9169a01fa4ecf3dbb1ed7deebd612a GIT binary patch literal 6853 zcmd^EXH-+!zTaR$uN9?935cQ~&454@2r6w51sg?a8bnkCL^>gWV~ZpZ$3hVV1yNBT z2I&xjBY{x_jFdz`z(kP_p@g2?eY~?~&4+jAt(i9;?t1rA7AJ>&PR{=S>bY^y&U)29 z28m??C?~Q-Df}5(?v8qVp!QuM-ExyDJ+kzTCpFDQ@RLXNh zR`OZajf)?b`jNski-`NH4yh-Oj8M9E*7wm=IMj*m0sar2$%LtKVU+tv<@(zrS=uBb z4uG3h>76J5Viwr~ajxr)gDjUR>ftzHo82n)M=S~x_ zUYvZ58}2Bjovy#fDGT;F&v~&?M%P`@TA2{!Pg(lH<1HQ!VlFc|G*4bZlO0I{6{g~j zA1cK3Bzbb*YEsFy%F!lvn9o5B#Rut4H(rvLpWwB*1 zD6^9TvM*29$2z%(s}=coq5LanP9yh-9s7w={rS3bXFE@9P=7>hF~{0W$fxi=*y_f$ z`!h`MrKET^Jw9+qONMtz0!73U=JE2Fuw}br2s@(Yr_Y=@L-datPq~jL%n9PwL{Gn_ z8%b5+yVG;P+!=PB+aX8CR}pcwiRkt&VSXlhR=ZeW@|cGztKcrUO@qm-x0IG zokI4AXZlCm*z-VW8e@KKj(9|pOU%+4-2RCqs_0cp43tSH}}Ew6A}`pI(8#p6vK6pky+?ASNW^clYDD&w>Ne? zIjr~L^^B}6wOA(3^}?$qBN06lP4*P8x&&sCZ##D+T7-|BeD0ymR0p7fbZhYmk#ND2 z87m#o;@~vYG+C<{xPM+y%!sQ+;kE3rGha#;1ns=x@{#zLjo5N29sr{{v01K694+kC z64}AYdnx{vr6uQDp6TF8GTPg)^P{ilBGdOiJg6l@V#1FPGun0eT6OtCDm5+SAhkl` z#pB0Y?%lgrHfUgIXm#K~J*x4jqodWsgT46xaH8q!Vp>{SSgozCUew%N?bT-UqrGgZ zN3r)~`*c)_k^iu(wzjqeu9-+wAK<;z167qf<;osb6iaZNf`fw(d3bcq1V228IU(uX zK{u{EYNY=x-n1vCV-3Jy3hC2_=W(;|I#E2g$$g-xsL0B}!6A|U?AbF;!Pz6{+lzAB z^_7&ASS(h6O3i>{3$3>L&{pzb;oKr{XCKwX`eR3jVqsySo1kIWK+YLIzu~w501j(> zq+Z(D_vkkF(QUg}BJuO<>$Nsp?@K8!^jdFH#WkevWW9g?K77F~^piAvq~|*>)@h?J ze)*+j?5(Ef&sUZQwEGs{#VGRhOtsArjmD%C(WdUV1mi6N#HB zCVJOaDYS+!*y_@yzNJS;r3SYiqv4pbC4x2|-dLS3#Tpg<2-%_+vTEULx|M~a*VQ#O z+j&#E^ob9CjbxN*nN+a^IAJ#5B}&x;KuzuM=BvM#{rMm~lJ(SD^V}4MhK6WC zeIMkELk8WcjGlWwxcYkrG)M1g5U>A4bRQqn%am}ctM)EjjvBBaWrm|=Cw2lGpMGf2oJWywi^7`nO*uuC!2?rBU{ zULmVPZh7uh`{m7T&wc&5|U;tkY#EQn0gUw2l|3+nG)_A0{sX zRqhiQpt)@u?p+d^1v#?RNlPX(J6q%2xpQTv7RZ_)Hw3Ex|fy7`+0>f zdA!lgtWvZvGQ!{Q=H|9iZu^74RZ6=ifZa+k`ijN#21e&OYmGyP$q=|Ya}dI;wzjsR zWCg#HjgY1)OTMMyRaLoAsRAcPy3C?xo6>6z7=4mr;`mD5yLRo$$jr=q!V?FN*l?-P zL5^fyf;I`R&_K`6&wrYm8`sm*%ulzp=VG`$%TANJu;J>PI3G(Je^o@bOt$SZE!~-wc&VrqN6kX|gcUgvM19 zOFmyyz`ePpHnPkdfPK$5iQcDzo_h3&su)hbSKV9` zLp0rZHK2LG8SGDFZ8=C)YNdFn@c1H_5*`K`5 zhn*KE5D1*hg3gkaj6p{{0-4CF8uPNaskouvhS zYakNCX1*rcqM@N4$*9#8L#_b_H6uGaJCN$EWp(7p5y%BW_@2P@IoBOVMztNKftiJc z29CMMrJJ7EQ?P^zHA&FD&({T}WtstH+A2=IWhmK`VrnQH>Jn-XGeknn zNX0lDc*%fo_d~5LEiK`Im$&QRy?d8c?BCTuU2%1w=4yu9w?Yn4J>b6kpbLIydkq2&1Z zc!)0B#3i6gsQJdW3hrb8Q`)IoEzxxyD<3LyF1_egP*6~<6xzWWqLRhHgMzoJ8Ju?W3fZfB zHyZkPDlS^O5~HFkA*zkmA!pjj%~W(~ru)_9sfgj;OiH|qKiwcLjCbD#%%L7rcxABfpco) z*c(0!je?-fh~55Ea(=$6(o{H>$Ozggf+TEdQQ@f!Vm@fv03G)V%+fU|MZ}}S2jyHD z8BSI((rKl7C`(F0k|KR74^8Ac0x)sVMtr*}lI78%!ySH%(3%b2gOh_T`P3ty%$oJVYP1BOR_nw@>a$%9~k3jgwxoZhJ)ekJU6F|flR&5VDm z{rTz&PbfEtq$4#Al;Lb>=Ev?*t1H6CVMLSWLu*_8HPHh_n4P!*?dJbt#07om)ut2g zpFVv`j8iZY1i^sVX&G*>d;)swL$Hy7qwXeXZ)?LfKRq-zAy?dS(H1IHo~?z@|92Yu zGhRUssFb>kq((z4$L}X$0&uQjpRdwjt77VI1n-1X5gz#M+}X1`V~&V}$O|wR{14{3 zjQx`Bj`xk6D({MeC4ez>1chv$fj`hwH*6KGXns}GirT=g+16sNgxT~S1R4q2E`q$N zzTRFUEIopb0WiowF(kIDBAG~DUY`5WJ3Y=jEqu#kyZiDBb5oQhD`YGzETHE`bdJ11 zADa92E@24bm@6l;beS*>H_r@yhOLqkrnKeSSK0yIBHmlgA;4^t&5SAgf1hl zH1J!<99_QwlUc`x{G{9BD+W0BbfLxx09I@L)pqZ{7_PsyqWj;7UwC^*gBCK>1}jQR zmTh7U>@ue!7N+?;1W~NcPL!ro9vS+=;-i`0tBvJV%hzwQAP@-e?ipypHd0B`F^5=F zQ-kEFVm2F=elUb`)9}MLj@a!~Lq(3h3LAYT!K+?xuf@c`akI1$ztC2279A~|cP_bb zGRK|13$f2G#eQ)%x3>i27Yx|0>lrYC@*vg6AzBj5c9U&1opOy_81T^j*BTIu4`8;f zA#Yd@ecF9I6NiSaR>tGUkK6U3#v)CW7nMdsV?{HKBYf=dK)E+jL}2(v`MOmcau3)& zyaXtw8ZwH8V+w5SM_4?dxZ}*hJBf+bE-o&K3$Ub;GdOp&*c)cUa(ZQ1Sp;P&8B2(G zm%4LYX%1Flb7nhWH2pGswrLHA{*SAB&qFuMXq?1=HFwI&%0f+iFwk=%yr+9$@hL}j zDWn)glsGMFT72T@Z=EGn{Z$Hv)eZNJGod2aMZr{EP*fCxe+)eUBacGtg=mGoR|g-} zD^B-?i8)F}jGnR83?DJS@g|Ht)i7>mz?%)E=HzId^YO_nEiG-=udlCnga3>f$ayIU zGX)^aVX*Js_LF;QbUHokjas6Vb)39I#Xw$ptb&oB7Al}xl1WrI+_6LI+q>kZaKeED z2WT*?BSDAz%TJp~Y>#L{z?@)+x!&G{R{PR9!Aptgpe_Y_PMWj2R0Kh$E~ zPHw>td?>8j{9vb70*e`L_LH=>89MCWa!O!O*I`qX%_>V^0mFrrXzX*x+--1LO6d#H zSGPt%a^1c@NNO zcp1M(dl6xvVxnl9kM^hbvjm(YL71tr@=36I1 zpHrQ9e-qLCINIy&o$2@2vCX9Q;&epfRt0vD88?KQ@!$RH{{QaXn!R^-tF~&XqPnVS`h4g6-uHQ*a2{X0 zpu2U`-c1OCY}GrfV~ijh{1Aj^;Kz;dj!J9qR|Ju?(9`*gsaM=|pHIm1<#_B|i!AT( zA-gk|uWr0;a8qu}ITdRuYF_Xw*~w>e*_nakH!YaDZI|+?cdTrWOAm1)V(L9i9$(Hh zGi`UP{9Ja(sQ#v^bc6EN;5yTG>wRBGLiX`TXyAB_#L|B_5{fz8a+O!|hzO_>u@oSWVrAHef zJjk&mWCL>J49^e9hme2kgAv=7Hu&d17L+_=Wku6g;6;S}H$6HzMJt|-STRFbA8Q{A z+RpY@@>Xs^t_sI0+f${VYxBJ(i~4+XrY7sz@cn==O%pE$R{Ag!?oloxEDI~ESh&uX zBTgH5{>CN$^xFOhe(=`ioiz@*mB;t)-TSh#Qfp#z(spI)i)382*Zfd-o~>>{aWQ3O znr1ur?hz%v{8m%US?RikZw)N(F9^bW{ew`=A%hpSj4DRu<Iq=bktnww#Bb=7!>mQ8kxdep0wpKmyJwJ786R%ui#Jn4hfRc<5*$XBS_pO zd#SXlDomeymvtT4KwqDlpyfk7uiDo>%%+HwG_@8RmHO(7?tXdJnPt)Dcz3Awu{~p^ z&%QonPkLhF0XbY1JGs+LYNxTj^sY^hcu1i-IyyJJQi`=~&sJ|xyZ7}&l#0Wp_KuES z6k~lOb914>!a}VX6R0FdqE0QW8eaAE^fcLX@8|nwiK;f<<0*{77e+~EPA6U*+l~0W zy?s`wCeM~~#@^muSw+QN#QDyhpp1+RF-Ceu1~X~VxokXD&3Dy>J;0CkqC1qXjl?Fw zHH4i-c#(%4zsvh^u8lNC=lQNJT!x#_n=Zc7ks+m^pl}OnlamjPV6&IX_qw!HeVaH& z^!fAWef2UjGD&%Pc@)B45fMW*(oAouB9Xn?UFcvgs^KQJZJ)+Yaqe8eaPx`T5PyIF z;hdDrOqrgZo-#h<>QVTvxzCBG^4upoqp&0*J}Wu-mys5-xK+{JaXeYhs>m%?Tp;i2 z+h2#+0pdh8`I3QOSGy^gOO5@NKEvg7j?)$5+Bc5pF=*OWKl(>%tgOYGUkZzh(^3o~ zQzs@S+*-64$uC~KP=*!l6tJJ}DI8y+IV&{hW@n$bwzeMk7jZhuiIr_>r7mXeW1aI__byHLZtsN zZu{uu0ZS{Zq>75(Q63&YOb0DNF&WGIBU1CxdNcl~c`8cfWBlTj8({Z~cZ=l)IZ-^38@9DdTNvX=pL0r=%QuBBGi@S%cOYhXNiKp|76F z$jP}--0$r$F*S8gMMXtg!ubCE``$C9qtp&_Tzu+<_!#J{Z~(BjT;g(OxTSgG#k0~W zrcygMvekD82s|Bpjv3p-OWIMXM<5W&CUeSzu#piF$yz=u$+1pl>6EoFEZ56>B-*a* ziQ|_yhq5j5p;+hV!$_Jb5mbKc>f5&a*8oj)yw5rN)c;Q0?Dh4-Q$>f)tXI%*p(znB zb8_VGI5_z9rWF+x(b$23c4Wdz$>KqYBS(%5jkPA>2WlP+H}6roW4d$GBPSk2IKE^U2JOY>9It+ z({SM~f?NnYV2!Y>0E*aOC9#j6J$tq~VP5V1t~B#fcF@AY!u7-FW87jc{e-yO)93f* zsch}-6%E)f9{TCiC#PWmm)7p??qST6Cr@S_xOoez_ZPmFOucEiusVU$(J?nScXM}- ze`f)hY;%gatL9X|wz|%2D_bsmtu7BPg#yamFK<#P1OPHB3ZK97Z7yrVUgBaFo`%)p zxZiMR3=9m`;}E0<*)w;-!aE#BMe@qZN`c!r)zsQL9*!=dol1RHA0|$gkjSYpl(7@xhr}s zp^;P78xKoRVQ@rx%=AWUXlNLt2R-+0b1?0=V^4&b*T4g(MIi;7I2%B<_SV*?Hoo(9 z1ulc{hKfFhOQsD+t2+0OR~(gqAFb44t)#D{^^@W*#%u1$Tt_F)Er1+Q%E6w<(?G(ts>WfDBzpbM{D6|hAI}DgP+TopE-5v z6q`MY4O4d=S^5^kgN!{w{}tNy3Cy6{$f~83?h?GMD8_eH%N4VfxV>%^!zlG)&r^nr zXimYbnetroU_Rsz1`x^kPoW(h9rFtf3e~x#DJd!QiQ5TMHYCon$^BOc(l1KsI5;>& zL`LdUPz zypS_!OEWaYvIn=DK$q`Tb-EI^2wUHlcq)LZS~dR!ZE$p?w}1H(eFr#_Yt?eLa|(yW zNHZic+s4_8Eryd_xrVuwE0#xOWPIq8M|N(KPKns`=$*ZfJhbyKVM~8$8SC2+Dyser zj;+@=)N!&!@{d1D4Nchh=~aaBdJ$(??iCxG1Q=FrDqUAxH55Vu0|U>70r?nPwyGIT z@Nqg9ee6)`x#%6F6+6;y*cSYFN@RV6v`G+++3?}%L0cf2z!c3z4Wv&4r)lr(Tq!XG zR$II#Akczg-NkbO#zX`UpBp=#R#>P)Tx-CIF`@(nlFmE{I+^%c4nZCo**kB4?a-Cu zgiVXM-jbj-yJvR0EhY2`l}f#R=g!3O{`U5rP}D#~&CEK6*|whY;;cm-SMPg^O{x^R z;@*32(h$U@XKQe*_Qr>1nU_w(;8P4ge17lPAs%GuRmWSwGkjFRh90mgfds)6{%sq zUk|3S-a#P*E=BdPggjg4Y$jy=U+iFM?ngeS0dDm2ZTT0WN-#!nKGTK5O1Bz)>SbV} z7k1f91_vO>A7M*+JnXputmwfrAzm$B78cP8Ivc;Ydgj1xIZIPE>susFjDNeBELZb- zZ6G=}r+Q2CRRMIg#V5^pu2d5VIy%V_*I}^r73~8~57TRpYQLAQv)Bg257U{s!E4Hq z-i0G+0oB^)T+Q(y%WgvaxNY!rS8Wb8DDy-%0W@=`3+SS!nb9Lb1d}|m{8D;BLS5!eM zyfP#T&4F|r4kxp3oJ-JDZ`NFFyzS%^>PRc9D{`bsq-c^lUejT3mm*>FF{M8xL&*}E zZRC}@L=?E)5p0_fP;y8EN?UFO^Q5N(Ae3m(nXjEp0@WiS7{dADrfLEX?= zm~lgZUSW|o-qKYog}KYi?|BfHO~%e9mX_8 z8YGi*R!&Z?l9-kF>}2Ba#`=8;yr6@gR-JYBIYai8_1NQ%LA?Cimg?X-pEtujRCAYeDb?(TY8^YfQT(W=rq@xxFRIXXessxtJicF_ z>i%<45Qu_50sx@~$KUU`{Jmu2zetiaf{ISk4GYy3yZ_5JF->6>V>S#Zf z0<<~PJU4V?WCSoSSTey&0{A7!#kYJywMk)^z2zR$L7sHNcWGb3WlpkKrog0Qfk}5| zTM2=%K=trydm3gJI#GLlW-BFoM_KfBqO4_sR8AFhB1+ZS=3JbbVuJTX`p}9+{;fJI z=gM8U)ptTKQ&SH+l}{I4F1%xQ#k0?yL(qVJIKMY29i)qNiZY0Wp>9Bf1azn!J{R?Q z7z4aAJwIQ`+P%Z9F3-L#H6_A0M#-)jFYd5B(J>Clj7?t#BO}6C|Ix{7HDno7IorVS z5`L45bar;ub2%(qXyLlNva&KY@1@&~(Mo9)0@yUW(D?&z4t2}qR_t)Dm_GxPON@~R zYUE`~%D3Mp{~slCmnRFPH>j&jS~n0k_{1R~7op{bc6N49U$1FiCMIooMtXMk69?$8 zu&P4PBC5JD@D+U+Gg^=Hc@QgCP|8V-(?(_R$ zKV?JZF25ci^!;$}+jH~X6cCHdgjnrcjZshGa&7xOdlj#WH}8baRkvaOVYh{?7kB6Q z-R|Fuocdw_bmIX_UoL%;$xQ|$WmmBw9R757-od5>t#UOFMxSR|{0Yxg1NqWln!x{Z z?5|LV-_nvws0JvflmIbrDKn@_C7@kxgnyQhoqR4!W3BdmW$x)f8uqEV?C&G3bH=Cg zTjZU{n)mPNOQ!$_-$enbMxE%$Y@<0>#{)Z!U-}wum`>?M*HYO&B6|z_5h?vh*-s*^I^`3IiSt5P%UkueK)W83_hX;uhdzgdd zSQZ{J)|YH7uy127&wGNr0ZcqG&iT~P5F8D(0Gs_Y@`oqtfsn>fqm*CVckVY=R5jkd zd)K$6uN=5rprUQP4!}$pOXc|SGZq#WrlzKDKD%Cn%}~;EGtzqZD49f*1@$B$p|1}@ z^d*oM6n09!y|D7u^!Pu1NhR3?WS$Ez_b>G(AM*fVn&T`)tzKV!%PRZnD*%XW==pe! zLfZNLCaLH2037OMt%_v9UXsMjKUQ|?EooaBJcp8k;gs#(^)=+$^jq)!x7x$a*n=rQ z{xVozKeu8*-?G@r8qb2DqYXSa>eQF~U|X1Io+vRc`})j)3PYf6q$w8t4Pyx}jx@On zy+%(o13l5QVn4(BQSAEKl7$ohv|qdGmY`KOUnU)y}{EFVOsd8C42zrQcxAMX4=II}pEXsl}X=JX4Ys zdDO1s_d0~sxIixPGCO-ZnIZEyu$|FxK;k;Y7in%r_l%@=UWd#|(VqHCOB-@;-$wqf zYc4M6%OD37R-QAx%A}`D#*Z^*s-W)#?mnAW{D&(6Z{NBLi++Dm%j?%v{p$ehcb>K{ zU-p1>G;s6q*tTT+W<+Dlww(6^1L(`CbyuK;+P5nH6)j{ofm1pBR9EcrL;me3xfrfu z%>+X(!upK`^S2I0Q4-WWtYGM|WJ2KlFomJ!*%+mm2Q1*MG&-J1aqnJ#7VjGTb+de+ zt~f#2W4dP-YAc}X1J7CRVldLTNO#%zIKt>c-QxDHE(%mIBpdTXbr7tCqHe`Bt(byJ zHzm7opPr+4?*$-h3xN_IX5ezyLco)%ifyR*6F=)KS>#L?o2^*9Fx6MC+L>ehU5d}P z2`?~*>F-g0_Hl%-y z1hl(8eYIZI*xlW|3}Dd&cvnVxx^(keXK~eYm@;GxXWTGtu?34oJ(3f z8t9zlp9Bvtl^DV|qkg-&wYwSqE{qJAG${5v&X`v%JO{WR{E<~fgn`sAMo-sZ}h!CPqGdG-`s0; zFyMQ(hIRxefA!i0o@5-TX;ejYI8K4%)Jmo9fbmG_O9N#93a8t#B0W951f8Hmc@(i= zH0(kfj%&d_O2xryJ3t74^cQ6G`#95OeSZ}B>r_Ediv(XL8AqCG30J>0!yMLNC!#ZL zIP?ViZHufsVM*0F?;&E{iDm=nP7|uf&Pn;jMW9xb{`hav#~m%JFi#N~p>gY`zb$01@ZBmgj7!u%ZM+xq^^MXw7tWcMIRVdDFZ`eZ?N#|ySBxvSk`E{)HFNT*aX`bCQSJZS0h zjYr%5I{nbnB2hqDB)D+%uRog8@x>g$c#arcRK zCslFOY3u;6FCTIfC~ER*tz@W=u0`{B?&Qw`-y`h2JjFgdWgjmw;h`MrZ$a$zm-$hs zngTd)LE;$44$HDA&TEQQtsXu6yNFXs;;L)nMHj&j$dv$a6PMae3{yb1Dn5ZMuBHVq zm7JUVK1$KHj6?bZPHXy0zGOB~CEy_L03AQxtP$G(URmV$-LqE3PUrLOS}q7#yBT?d zL@Fb2KKzIH#T+akCME_HUxb+VSfVNLr;zmnT#UgBSv~Mn?Z>Gp>1AaaeXcE9-_t#D zEatS1Wx0oA8E1tSj5^0Az@W+o{Y9vND%7A|GT!XHQ4lQ`+-`ljgc?j*oTav^jU&o9 z^hOJa9A*JHs&1g_-B`{fh~jvORS#7-^Rt87hvf%MKB2f~e_XJ+Q${aX2#S(+m}zk3F8kFXr_Jja?Tklop92s-ux6dJu9~O6IgE zS3m%JgJ3p+f!6~`2lIn2=GeffdUso7*I;+`^8_}Xgr!z@C8hzIkx@Gm9)@udI{K#{ zj;TRdVe6}5t5bGZpLgmw?n2}+RLU27OM#=k(tZdpY~pDn3yVEy#EF+p*-2h&v@2_3 zLAWUj>Nuo&HMm->&)^6D1AISUMXZ4r&)4v7*U^{cX2-#33PJ~YPBoX=R&eZUiO3x8 ztgOT_(M3-Z!!sS&z>~cy8MM_lLu@>H^vWP}-QYZwLG%n2fl<6f0+ila+!TL872Or3 zW;NTImh(FPz8igcBqZJ+vx~!@>8U1>EWy0RgH3=(!$0eL9}kVAmKjLc^yK8^62eq> z9tak8O= z!Ogfp>vE5}>UCB%Atqc}B}0c|`H8YM(naY&02ee9+_8u{dbv)WeZb~S2Y_fc)E z&r+-IFt7Nkw(qzBE=YWRl~OkkA3)t&--U4U)N#^ibG#yn%YK!W72?{go~DNJoayzN zF6jqmR)+t0D6&@2P*VV0_duX&%a9H(Mz_?08L|&( zmqMsd+}h$OB~akt5bW_}%eM{D7ZDz&5yXulVp!vd4xf2nZ6(IEqpRL1{uzQIsl85D2KK2uKjA0wFjarNfLOh|&}R z8z2gX9vx|lf`ncIm`DjNgqDO9?(;Ew@7ep_z0bX8-?P>^YaRY!0pa`J_WauOMxV4W zUb|}ZDg;5+o;Yq~jUb{C2qH50r?Dov}eRC>5`z`5?gQsIr!X?jM$Nu83 zL-iMW@2FR(h~C#y68&f%myo^Y@x5xv?^}%^XPDNA2(m955k<})6ZsBlh!g!2@{8Px^~hF@Ra+6mi&BP2 z#HZabiBzk9@WIrNSJlqA?mP1~qU+_^BV{Qf$oiXyw{;ZYDvW#gL{xaZjSwli`1$@- zH8CXX(%{?cp|+yZZ>e)lcgfeq#LHLx2}!bhcrt3gSI30!E-PdpZ>{_Rc-LEl&yj}6 zzdow}=i&c%`yk`$iYuS)sk6Quk*K}D-)no0)W%&FVa?uk30vf2H>t#QbaVuNy(x3< zW0I0ydT6_y{ZSL8i_IChj~B#{35{}Rk%{)__R6?&&0O;bZ=7Zm56(2))ADgqc6hnf zLYMKllvOA1)|95>+i}|6TZ{eej%9*cI4icupFy!!lSj^E-Y)mFHu0dpufEBtNA;etmGA3mfy9655t*3Pc>y11fjety1h%TbxyD9Ih?+MZZdR1Gj% z^Xm6^I@{3NMUkWd1LBJ5s<7!Bm^ci7P~7*!&XgLMe_&{ZoW?~XW`9+zoc5J7y9zeI zVecL(L<*cps?VN3?~S*!x36EEAI~l+*?%lSL9V^MomI2ZQi@sl;zeAmC04(hKcr^d zoT2a5`^LL>l9ZpX($mwUOAsJPXs>}QBBSaoo5}ySt2aI#gEiO$KS@f$v>X(OeAeVt zVSax6NJgkCoc@ycGvdfg?D*9cFYOCm)cr@l&?evA5U-#9`ab*VQ>9b+j?$g3M8X;c z?Ux)Jkwgu23gb4qCY*kKv38O)py-})?V{OzO{FHCk+i6&;MvbwbVgn#o-ONBHGisd zp~tH?UJUt`)mSAyjqd19)8v}lJ59H5KesT^U3C7#ZBA2A^+ria0gs)yBSHI-HgV|V zU0--u4TnW{V^DH@hwj?fjbN9!!QXy0{#X=-M5q>S?-v@#_8)=T93CDXrB(!8?t1yK zuMv=SVQ zIMG#9bgAXhC2#L|8JFN~xn`-9DIr>ZEbP)OwxzF6VeQ(rzDojjy_NBn_S2CF@+Bvr zOtkB{eW63SzlYg_1Ky-z%(ZX7s{8a;I=nn{D9xX8!j~SeRhOpYM|<(QX-|`!Uf|`v ztBoqYV^8zy;1pzsvZq)LI}&T&iDUXsM~c7`a|-S!S>M<8rKyg5O4HHMpKr67tedK0 z_s=~T;9tz^otx~{%1NT!Q+EptRRPG)NwR);ayM^wJA7Ts%dUFdh!Y7TdwP04DkvzR zcJaBh*}1v!e^Ao^5jHlh79(?`Ejs`?DiCBsVu35#Rp?5-1YcSmU%srjv$OLZye^K{ zB0qYx9bd_+<4~F5GL~4uoCRBtusC-Kk4GzO|4vsu#878qcEz-yd??w8#-S%Bl6e*6 z-l59BDgHqh$8Ct=$TMZOsIDiqJirQvqvBtbm+N*Ex?%ubChL648M&MXWbOlP!CdRW zY>bPOlT&d?$=$Fj1Q~kM>?-11dgW}KycSFat(vdD-JGn$!~bY6@n`9uG@9e??zNw) zl@>+(Rd5B!!dUy>TM`(>_mL8bQBi*`b@~y^;z=VTXQE(UJ!qfsN7m3x8e20 z&oSAF2D+*h6R+-RdRTwT(67)QNp`|VH-|60_GQ(|)Zbbw{|JT)s1?LfJcL9jBnh%V zF`K%I+*%XbIy!Qrj+c~_c)a_0MX&cPK-gp8iQ>!MuQV@wObTQ(Ke;yb+J&u+i;9Z! zzw2L|V#^oE7;^pvx^GqAt%0@r|5642g=O{6Uv1Ofvc=Zc zwgwi>4LDZ)(w8i4&fpDtyS;0CZLEwj@YD;Js&c9E?~p8`1A(d9?o8Lz7whL%fln|9Ak0FDzDAbl58xLhVF|XqY?Vmq8$EgbNz2O zSJPL!atUQ*J-@_@pD%MJ(G zeSQ`DNv~e*OVFl8IaG&nGY;COoZKz-sH{vUggv!I{=ntk?5jvbTtIQk1k3bog_Cgm z_BXKGmMK^yLU1B4d=*SfB0=4)&VTp_f=n9(c#0_K`d6{Ut4%D zt6TVbI?38BO`D}pLJ?2dv3R$mlN0@> zj7yY~P3~na_p!F8MdxZ`E_rxFFD@?1?)S8HSH_%)w2;+0P`!W2UcF?&nAN?+PQT~K z%jR_OU2DIm*CmH~7~ay&L2`>nh|Z6J&r$Vs?|^p?{xf!_VTW6P<+Y+S?|#;1JibG# zllO_!@f)r=?VfIzrr|+(T>ABvJPkcIk~@yoP;yM&gnX`V*V)KPmaa%(Cp^6_N&ccy z``5{(bejOqS@oe?awc0}b_Q@P-+2RW<=rdosF{~UtDJ3$6~}~K$@9C| zlqNTl=4X+1<+tx^i$a-IT8ndxjT?V7gQADIao%Hu>s`4Y?PJCrOFZrR{9Db{VST8M zvDg*j6Vb4uG^bgjv|S`-lQi|s5^<{7+o`f;+QgZ?gc}?>bA|+m&7Y$maYI}}Rp@MG zB}wGdG4wl`{PUG_6w@u#dHmC-PovAr%LCnJN17AmeJa(rZ!ZsGD()~&hyx^+Vp=L4 zg$iqHYn$*V>xaxmW$1@)@{w6}lcK87@Y^qv@3Sq*W9j{_E%{Cg6te3YIrW1s{DIm~ z-wTFKy3UAeICm(JWMfhkGCww1r)T<)WMZVk)#J9OPEB2DdU^JJVEJD}Vym3#%6$|# zD?8K0Pp-mE9odSjg&{o(V)oaflB>^Dbm7qF!UM_viiS!_e6KSuA&i`^%4>d4gDPys zJMv@4#un5HZU4}Uo8{%*8k1G@(q7}K<>^y@(S;X28yX~Ii!}QkI;S(3BF@4Z%Dxxt z8tgt4A{nqL=*X>^fqAG-q}RoJX&ngXa~yzGjEpY#SL$q1acsj|96fpzB^hn;tk-a& zY1dOTn3}>4ygTHm%j_Tkp#GP3GLpw-4%| z?n>u7oU-AuR!&Y8K@#g4C^m_L1H&%r`W@sM&kB~-W|!zPd$YtmMV@!+sg>W919IZF z=pC3m?(OXz6J_h<^k5U<3-tgB2cF*E=CDAfHo0cqcyep5x#?c}0yE&*r`6R4@rwG3 zg#70xcRxhkp? z%BJ-r5JUSGRDQaMu0*o@mQh6Mgh&`LBpnqNvA zUQ&ZW#}lsaLkwkFAFBOq03aKS%_J;z7Xi}HCISDp*2T-qz&I!VigOYNrwxsa9w+q> zv|MX?UEfw-9r{>0^Kq}<%z6MOhsaffdTKmX*Xo1E;x|hdRxLQ5*t7zeQ|ZHisN%l! z$CU!bkhd-`>oKBbqmN<(L#M>CoOhg2V{Cbz1bpuMNner5iC2xZRQHT%pD?;Sx(Sn0 zOwih9_kP+oRn40UrbX|fiD5W~k(*W_h8`%`yQldcOADPUW8Ezb+j;TRJxSC9XliO2 zd3kv$Ty5Caf{Liim*e!NN_Qk+g`8l}_9kU`1X(zFLb&P5KsABxhT%D^*{r#Ho$hEB z`cdG%dRlGljvN8qaxKs4?eB|heOuzX=79rsHzW)kVsM}cKbXv<7*3Va6J#|mnkfas z40i23A@btcvlyuQU?F$J4FE?Sf&lA@O-O{rNmzXNW&PXhV)PCtpZHkS^4+HjoaH32 z{435^-mS1YefqY2stB_C*V|HWqeuhd+Mx>*%b*EN8Vz(=iwmMkdvzAX%i~M8-CDQB z@mZuOk|kzx3K>8rDT@sciv!#B22b6LJ`=?~76`GL&gz8{Ypeozw544Em!s$rtW7P9L1x6i73+lfHxb^gXqFsU1s+&pHozjWy!ud~lV(ZS;gKbZ3 z+-hT_TPTzb^YioSo^4OkoASX(`w)4(MW9Yll0~g)w|gcPZ$SdW(Hr1eC`0)i!1u`l zT*Uei#+}j$vIv4ZHD;0uLKwx76qgVW-Qjy~ltf@0V2`AAdJ`|VG-c}eU39Dp3Aq2$ z*~6O;247jEq*N!tgYKa*2Q3ZqfjoOx!hXWcolLVEE7zLHIA1yBiN{-@6c`wa`@^vK z{jh9UzN>o77iUeib#~@Gz?VM_t^l6Rcd63F1+?4grI7(bH3P=l0^QiuAlLHof{GXt zQ84bB2jo6+waF#;5gL1#+)h}ytvbKq3VVv`_O0PpD|>r;1=GLM-jxSHdB>nmD~ghn zleH&{Tj3!~yn%YiQfNCc+~Y<@X;AULJsx?rsNG91$oZRe#A;y^&tj3y%(OOPKq}*{ zWdQVT>*`8=?~OvmTs>B(zIKbQrk$i@48?-V(*Myiqq0@dbWeQ;2vpoBsCjlB9DVA`o5;#LdOfPer-t&FP~Sl3z| z)Q+`3v#Tw{zx6gmvv59h-bILG&^p>9J5zQDJ~fG4~s3GKUn$heReXJ|~;Jc5k*oiB(<;Z-&zC zfM6=f2F@OPc%up&YU|to7pqtEVDNup#`>R{1Nnat)dpa2C^~nvxVYGeKp@0z-tU>` zw|DPedhdWRP}%8?vZJHpxevE@`Yv?4`)K(QDgHh3Wkr%;->@EIfJ}rG+s0DAgvx=xSrZ6?btDE1pnOTlYfV;h zqCjxn>esBFg0JQd7yHudXldpT4&>Bhh?Uep5O)$3CII^HxQ*%yjWcf%HIZ0A*OZ2E z;01KcyI<{G&YpoA>OolqmVf4sWMUv!k2!Q>Wi1#N+GnkSxS_@rnGrs>nV10KZ!R^k z*?@N$O%L>NrU1%l7K;N(CysmeA4a}JtT0%CFxN6Uj0tG7Vo^-h?k*tkEXfPxIPMf0 zGnW(>KmKrMSKit8w{p;kYWeI*U=JQOx~~_6F9&-OI}5~=jsm!5@bsWR5LOOoz&Tp1 zTJE!F&uD3PEDcZq%t2XLg2;K#(8%PPg+OlI3iw#rsagVr6P2`wN9}xTWOV<4x1(d( z)e9)ugK+SG15nEYFY${ffIJCJ{O0CbE%Sgf=OBg1E%O`66$*Ghq-MV+on89eZ+D*N z_38&NdfqW)2NSqipC#bxc}qg>$^iPZ>w`p?oJB* z9x)u&?J<@@TX7q!K;7&s{03LL??c&fx=E^m)FO4m);vuF*GwPM= z6h^sYqG^c*wcJt1j-kbPWpduKF(Bc0hhyioheX8 zv)e+lFa&hNF7VbRjmuD@H4x^9`W8q`X#iTW?IH4Nr&XOr| zBXmeg;vhg(31$9VaEUGG=^ z{rmTe;jwe5+JhdgGGRn--~@CUOzO7;Ir}zYg>-B#^sw{^V>X#4yV9;44uSZT6025y z5Agr=0)28!X`YMrkwUJ{ChE&2awk^*LfDNeGNl~NtKS-EUEn0r!T#NcwFDIm%5&M_sg@4@OzUbf#-xK% z1~2KM#Wr2)bYeNZ|EZ))cC18AbJqdwJ?XCI3YAF9Dz&6fAa<@mg=LeErRT zJfF15rw~_h0C#QZ?qt(xQ&ZD&aP}X=D{=biz6Qd5u*p|}K_m#HN6C=3bcT|);5A@wu=xqg16PJO}9SNH_4$nYG(H~5Yzx^VV z*nWB>8%z+S)CHV=cC}3N!CA8rWdpHQTbXG3M!Re8;-U2>V7%j!r)La=D3ksVppa{! zpV}L*rKu@JV!$N&Ac$ne`-JU)9%s8w?0`f-2aFabv)s?M44=6}Q4YhlkbDMEeGdE{ zNUsP{<;{e z=%^^P=VRiLq63k;-aHG%QNWwjTOi^b0g&8*w>7o8;HkDi z9Iy0sjE#jO*w3=y%4=RanRabBwLmy|t4SNly7<`29s zC)6%_BDR_uX;@H7i=j;(emHn!>xF|DG^Md8FWQB`Q>`JQY7CF#S(^|H&_xYg%GZX} zi89vyycLz6(DQ_MQ0uK1Rx}tSqg@#li1p()@83h1%f^_amlJvjlMN9fVib^m4ZuOh$0b^59O*#jyg&bf&4Z%zb z*$nP8=n>Yecv(3@2jyg;_X=7auP{FLpNc(NDIf3dwSg?+8EjRyaiVHJ33?Wg;`ZW& zpqlSxz@Sl6ngLs)dG@z|n_RdyS<;yccLbW3Y9(n0+NGX3hZzS?v*XruU_QGQjOg}CjCs&sN zZ1`71#O?KEXVdD(!M?};BEE(sV-dQ39{Z^0a@*c`=d zRy8#E9tSyrzhhNHV+rl7`UABk3%ZQXlg+zjwr+oAIr3Ia!VHxn<&d1jx9*hus)7$*Z zwj;Ex8|z|#?V0&GVyQrmhS88c>9gKRg#T1MeN(LluE4k`xK;-HqOuOvLV>gP5F|s? z1D%<%QAmY+!_YfZU_a_+h8o!&l&sNfhs304$;mPyov3Z%{x~gRUOduV-AOv2d z9-=QAkV8LX0X-u8dLrLg0n8L!&FJfHT(K_)R>CmTfIy4WXo`a3RZD=oPG}fTdY}PU zJc6N;XhCEi)q<^o?<++Yg7&MiBIDDLXsQh&VsZxjyKlp`$QtxB93h+RIyHn$++Mzx phY=O|kKWMxyBhmTF>;qgw##~Mj5}crHxv=%#8C^Qg2QKi{$GdpeH;J) literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_lag_plot/test_should_match_snapshot_dark[one row].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_lag_plot/test_should_match_snapshot_dark[one row].png new file mode 100644 index 0000000000000000000000000000000000000000..b69bb6e78de76e052b3542d82ccff29abcb1b5af GIT binary patch literal 10130 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 None: histogram = column.plot.histogram() assert histogram == snapshot_png_image + +@pytest.mark.parametrize( + "column", + [ + Column("a", []), + Column("a", [0]), + Column("a", [0, 1]), + Column("a", ["A", "B", "C"]), + ], + ids=[ + "empty", + "one row (numeric)", + "multiple rows (numeric)", + "non-numeric", + ], +) + +def test_should_match_snapshot_dark(column: Column, snapshot_png_image: SnapshotAssertion) -> None: + histogram = column.plot.histogram(theme="dark") + assert histogram == snapshot_png_image diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py index aa5abbfa0..e84f49d11 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py @@ -26,3 +26,20 @@ def test_should_raise_if_column_contains_non_numerical_values() -> None: column = Column("a", ["A", "B", "C"]) with pytest.raises(ColumnTypeError): column.plot.lag_plot(1) + +@pytest.mark.parametrize( + "column", + [ + Column("a", []), + Column("a", [0]), + Column("a", [0, 1]), + ], + ids=[ + "empty", + "one row", + "multiple rows", + ], +) +def test_should_match_snapshot_dark(column: Column, snapshot_png_image: SnapshotAssertion) -> None: + lag_plot = column.plot.lag_plot(1, theme="dark") + assert lag_plot == snapshot_png_image 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 9e6cfc0725a82fe8b751d1865f84ae45fcead53e..3f66ac1ed755630a55449bcb083673974c7a3922 100644 GIT binary patch literal 12875 zcmb_?1yodB+x7s0N{B&OfPz7zw4{O{q96_-jUtkRDBY+JqEdng1|cCGk`l^b07`c^ z(jv{kQ2%`f(D8ZSZ+-t-|G$=NjZB=g_da`H_Z9c!E6NHqlm{qLC=`w21-Yvz6sac) zMbf*20^Sj->->R2o!+Y`cUH|YY@*AZQD*ij+>eFOp)ola!%L5 zC+OH&+ri+}-hNW81DsFNl)V~o8jPaoRizHVH=)~Tnq^cRV*Zt z!3@Jf@$ym1z)NTpY8wh=z5oCJAGKB~23Y;~-OkDN_4PNkLb}~>U9&|dT?KadaqOCf z(?|XJ$sU7>P(JC@s`|G|O@$7(OUlZ)xVV(m)zyc#d+b+5k)k~9V=^*SzdWRAfUoc+ ztfuJ|3R-oFb~z6CwddW5`Gs9~UtKJdZoch4``Y?-Q?h3AyLVSgN=ooQo~a00w(<`S z4Vm{8xz!c;CS+N5g0F{qd_pc*SRBaT_&5t#B8FSY3k~aG?SV7oQrz8@Utxj z23DS#a*cL7%9Fn%*Y3x+J#XK>{XUStvd^u||1jFdCaX>g(;+p1YaX93AD`F1+w=VS z^YZWCAB%>*ex1BLi8Tmn?CeY#8#Av87Z+J^2q=pQ3p=E)p`kxBTt-Q5$n~==OJQ_$ zG=mv7m5DkU9h00^FqY{)lwnjB+??;TE4joJt5;yFDl04dHNU_AM%8PP$)M$3+ej}e zD#A^If}#!i6K)qR$$QhXXecRF?C-GbDwq$Fmex3l(uuNYNehbAOqII$F3)c-|B(y> z*A#D5HkE>ow(atI$APufg0NSwU)x>d(PnN@*!eJI{~`4Y4F~KK$%;bpmya2KH#&JQ`=`%%d{op~ar>V;u-!Qpp~6<3 z3BS4u$6b1sBZjKOlhd(l+FTkbPuaWdTJ)T!OBjV*7A#jQuq!^zX?n>9t7Dq@-Uqaw z-RKw?%*PrN4@kM@$@?-zmH03w!%kdUT9QvY#c&cug7Q?=Pzd0b#eLIZ%-89PT$?+A z?8?3tFE6j4*hF-^`O?f_d!a+R{bcvyHJ3;!x4BQ-Sw`+{XRgJrc3?-7lGEzB(mzCZ zc6M67e!TC5`TE)_Cnx7s*41$GSebn$-v>?! zkpJA7(PJg}ZU>zAV&e;&Gf)bN+E#m%#Fr8Q0K?#TGIX(W867_g(bl!=DU6RvfVt2)Ry0hKLB!bEe4gbansqu#jh2p#`U zLp8!>w%(dy>ZB+=PU1_kaXb3qKzfr~L3KfxSQfb(luUm{#!Y(XuiI)d)R5Yr+5FWB zBXlu?g-rB)4#PhK+waD}zl@S6NAA5fc>IzWQ~0!hYx-YM_5#@mrec9!6mA~<57+YZ^V@SV zubt<|?6jBP_qgj+RaN!1Y^P;ze0TlJTnx+V$!I-&{Rn-x`KBq0^cI&u&3LWW`3+miER6>#>$rhc2m8dsF*|d5!Uw*9}~6whXv=4@t40ai(1R@@bD1OE)vi# zRp)&KP5{Mpt*=-Kk>(71NVhu?W_Bq}dYlmK|?0C+u<(!;}o!oucFN$Sos-%r$t z#}&CPCn*Flw`UkByyijWZ->V(8c{RsBU-J7vL9m zq3p8nz>M`^v3G53bk>iRFrkZ)jqpPBPV~ZLPkMCpQF2le6-=Uhwo;Vz7HlaX2%013R z&B?)`m@K&(Y?xEkB<tF|Jo`T6-hxJtcU@$M|rHQ4id;&y`d z!+}Es1q)3=r}85fdGLD~A(C&o^dm%Fs()Kx#V02SOq28Mg0EQCi< zF(BsjVvMSEIu&4L3lB57jcTR_wTkP`5~GRmeS0YaT+tK+!iPf<4r*q4`yvNScV9cxM!vKhMMcThwbIBdZDQ&=XF8tL^9l$4agk&)@29&AsJ zjg62y)PKnJ zWS1s`Cl=q7E@)cIN^?l`ibJ!YL`aAOu=Nn^At8^psRUiU zdX;X+w(8c&;(KH{mTjk3TRc`n^*vVYfF|pCtj^;BjMzC=ihM@1c&znE@-Q93!0Jc+ z#eY3zw;QQFyYGaunwi$UIBA+a}`3mFtv!2on$W}BABOjKEP*evQ^d9 z&A}Y#;K0BrmX+S^&dU?;o3cz)R+q8sg@J3~<#x*`7}VI;$NK=JsUov5I{N9Fd_{}V zK|w*vF2Id!)URD*az9K>!9hxb5~Zpb2s9p1WR1te{t2uZri#Qt{m7Z9i}CL7?^n~& zIe4ciH&??QyMA9P-KfmJ;8y`u*RoxTl-P85AAYpQ?bgkkx{W!akCXQn!$eF=p3vjl zYTV;sFFXuTkzR$Fnc)ZdJe*2#pmLU6iyi?f(v|92JuHPLX-!0*Furvw2>{cTmyR+q zI{I8&TN~q?7!)u3&#aoyCHlY>f8dtc@YEC!+My7W<3{DuE}~jev|_$^(^}x?M&pmU z?K^(y3LrKNE{(}=7wDwVnaa#@_<|ikKVO}(OL|DllD3CU-gLUZ#N5(S&E36--K;#A zqhO|->kImuiqul9y#JxZwbkWhz~LH6Tv*Y{j1nTH)+)+$3f9+_=Nr)~X2qT)V-4{E z%pNOuK+c%0EKc7_J4KZ6Y zK6&y4wh8j+GBY!$j{0{MI#kT2j*h}SlHa_MxhEq7au9v%R-6=mgbj#cp z+Zt|etHxO4(Zc!b8T{ul|26bo#3WFaF)pp5&-=^4)|q}I=sC>l5aUtcaxbW zvB(i1`BnyH>oidbc~O$(d3clH5pei7nj-A+Maj|KWdlT9lVKTkhM5S3vw)FGda`@g z$q-QX28&FY5fO9N`bjq8NQAhR{me3DF-U2+HO>C_l|ziJ_v`?MPFzfU&a?Ux%3I}) zJ&y*6Yn2a&VHq1D0X8`>LdYd3VfhS$FM#kBCS+WmGyco{sf54F&l7=z@C~V6Zk58ai+{`XS+A*o|ow$NBqA zt<2US8y4i>0SU)<7cX86e){x{aYYDRwfs4k9j?oPi;Ye80R;^~(_J|k3p@XjJphqA zR@&8eyg9WAD#sP1?qw-UQdT$Kxd(DuT~9AHEG+CcP05zlzrq3>unByLCK$`3S@<0~ zUH_w?b+1fSm>3#}`G?*+VtbN3L46L8Klt>h1?~Xsy1(-t+4jcz`sm=`;779@931U1 zRdTm##M;Qt&VF?CG#{Ue^hzIXQ@jexL}xxaKnkBw>VG(SqyFa1Jh|aRP%iX-7(*x; zY}Jg6j27J=oaChjf=wcv*11gEG#Ti(q{FsQy#SYPs_=A?^4IQuVw>7_hXi9 zA7SEUMD|0kqmYo$%#v$gOV8zX_C%Nw&}%dXgZaAD-mbm0x@NP0HLW`;Ia?`!pSbOj z93|@=k%a-5rYS~&cA_;Sri#I{lMGH|<&)3C{9rHii~fd9dG21(oHuOZ;>#&t^zy8u zfI6mwS3|=hwelep*Q9AM+WYCj#mkp5C7}bzMf_Jh$V$&qO@XV0654(^TIV zp&MU!AQjlp&#%0uCY1g1%hTsI^_|`_a9?9pbY5sPQCCxo73p@Ag~y=5x*KZNX#M#O zcjZBZWB<;}FZj>8V-3U|el>zG(}eZ#0Hf(Ze(5#BfuAUaVwB^t?hgJ0$L<{`VP^n_ z^?4mBbeIeo*5UH;nD#M9$j{eWUkq4hs;fzKp&sb(&jtkjxX^9^1s$!e{i@V=f6UVC zaO5d3OD^t?+=*+n(WyHr9>CVCH&>B9b`4`QPunY~NAWchyT^0Z+|sO$r$Z#Us7R_m zBEO;!z^{cq`G?Xa{sxl)RXs81tC!N^B?p+{@t{JlBXGfFjKIiEb=9+k(`R17)>+-g z=o^y){?g_N4>9(_O$yXA`Vt>|HNgmS>MVlH(du#j=XGF_;UOYM9b>7LX>3Z_dIeY@ zF{SM|y~w`%*Ot$~;3IP=fCy<-0km9^$Mu^g?s>GKzkf4yEt=n)n)?B|*ph7DVIq|C z?biZDj?9F>Fo|)iA_zEhrR{?Yba4IRlRC_850CG^JpbSV@y|1Plyaju3=!76ll2eb zZKWvPB*>QACbrOOgU9}h{FeyxZ`~h;{+Iek6aeuG{btdsxxkPGwD!{zj|5Q_NL7$2 z%(NZ7I{&LnXL@=XSlv~1^(L_n?9$Nd1A?Yc`v(RPJ-Ui-!TK*2Vmc7#$lN^XjKi-K zunplbNxll*ZAX}K!ZQ`pX{Iy0yd=7t1^~!fAOLdUs-mr|(iSE<97-2h+~xv*Iv0nflfibB$4lJ(@#u6~ z;jjDYC&2veSzp7=_xtc&3<75rA+VDlapu)wV(~eVATeW zOiZlLhB-h1UXxN%B#f|N1nikO#vvji(&^rkrboGrbPondWbpIncFj^9qzw0T?|*fl zzK9%$OQx;e_VHIyC&bL(e|6sB@sdfTY9g zNkCEG$?w(G{-%72gM)*83vT$iz@EtfQ+Sd&*S|c>T4-ZH+&eJg|1Y5v4>CY=wRgL8 zZH@ba0HTeM%7J*JALr_og4ioEZP!KTc0lf-%`Cy0%C=K(*FxmKfq(K-c| zCb%G?p2omipn3mN(j^!6ijYw$byHK*=);3nSG2TV_78OYT2TK<)=C+_Af_$Qn|_U) zn&~sAVX<$Fz0dK7_NBHg#beSQX}k{?NGwI~%DrsSJNRtetY%X!Q?(KqcASQ&Em9*N zh&sbU3>(qFv|gOwKqENLFG&AjD&5XEoBDUdBz>}N%LUA(P9u#&`BKI~b^mQx1igJ4 z^`jb*)Wl%=+f#U=@JWmXF=DoGGt<~=tXa68s>p{}=XV0SZlIqAiTGdN-$I+M8yYK7 z?*Bz8;m1dJmd$1f7wO`ih%(7!Cqa|;B2fSBc~{?DVxoOtG)SY$}da%0YA z(h<7}zCcGeU{!atHcIxDgj1%gRAkVzXF_gxTOmQgu&h-?_5%+}vKg+%cjJoUmwy$i zAWqQ)cg2~BYdPlX*?hy%8>V)9`O&A}pPjG(qRGj}*8+s=IY{>X0=Gu|M7l+dmL**l zOu;?S&NdCCpk+=0^X#famt80l^gy7+6+MxhUX=9V!-uKyA3uJK=w09bdDM7K_EHzMxn}eaEvRJ+4^{Jle59#2UJ7CURQFq}OMqzoakEkH^PHx@#lSUO7xO zYS-bl^puOr${}z9*Sxa#B9FB=0j)xM%I?BdekNbhSFc|2n)w1q!IyS1dIW*oXM>oC z=Af{ywKPl=DA%5nNcJw98p$z03M91vhWg#U)m@m~6S>w?w;BGXPY}_e-db|UZH&x66QfQipX*UTO6T;0P|T4X`u%A_8NiF2;Fv zzU2$m)!1iVCc3&|-5%?1Utr4hgmKB~`5nlaUi;N*h81AY*#>dBZgUmFZ zP?O|yyf_Ts8?l+9ej{BQNV-$G;nYV78$N~rbS1=b5u)ml-S!8Nz6)pH%Sv?Ly|IM! zL7&dE-YWRyz)u{I`~fu5+P~mZ?OQJ0>A4*u|0ZUCIMlzx6U&ayXEG4QJRkr$9cNs+A=_-jdz|-c9v#(f#}Ptq*6wFL`wH_*dSC zgfJj{01_trNK62d0GNTN3%vD7w^#OkE-IPy7A|ZLAGRmm*O$8LrGNsE8L*H%QoNyf z@;>0v$%SO$Qu>FPCtxMnexVT=@nY1kO;S(JHmQlQDH1tyTKhqtM z00LBPw`djPS9gIIs#nhhjS0`g!czLaczf4?|L|>K8ll3&u9Kku5#g%mGLiF2+#$`M zS@J;L1Paz1^aD$Sb9Alu>g{iIQ1ak19}aEhj{Qy`h!osX6v%R zN$b!ECv6&=cdlu*0t$`@@S(LO{crcMiGl(_rT~bCD+{fJcM8LX!{P;0M zMIMXuNWu+v-N%)g3g@xJcx8)8xENkq5QWV;eY@!K{1vEq$41(+;sO7iy6wSbMWi+4 zji&_!jwyolP(MjW$!N!T17JQVwz09%8VlxaHs~S7h#S0oe4!8ufSbTKV;)`h+(!n= zFL;^oFWb0+q043RqdBAisqecFj7O26YKP7n?RjL@qHE(fGc%(G$tbMrY9FmfZHiWw zpjkaT*r$p?MQeBqngfC-!$uGjW_Gwn6Gl_C*iQu|$K};&<0ossCfAhVls#wn+bYtq1Pkj+ungcrkm(6(XNj8PB7&})fo8_dqWf| zn+!9kYR#pY)`;94l1V2CX2h~k3gORl4g4zm;e5$TJZSK|%|h_ zHpPDKB}tRd4CvyzV&Wq8^C=w=-@3nk*FiB!a`WJe%@ob+=LRDsM*U3LTua%yaHNR* zRa+2N#aOw4&0gnn&pnK@LhJ?NR){BVzaxF*rk<+y-#P_cofxcbH|prQ+|;L=p&juZ z|D(?Mz1gfYB{98W0mR)8ZMi%hwT(PJGSPn*zE6H{6rmVy=t*zz8?q=xIf={7zXb{B z%}7E8J4qPlrGM##OiV}Xn%hq@ro)?+k|1&@y<)F?6SkGR9p=63aQ%<(&p_n|16YnW z#3x5Z^`%T;VUKHt*p&`ciS$sv7jNj%Ox33UNM%Nj$O}(Zj4`F-%#ZI#w+vJqyOqT| zgTn;wi3q&vRw+qIJ!mTM6UEgl@r~vWM>Mo%7_n7jA!LHDQ(={rm4&6&ln6$au1Q4* z516|RKr#`qRtnO0>?7}TovlL1JanQdyQlyIgDCE6J}_?u=z1tDupQldM@md=DLYsB zGqO*hKS7uuY8zA>HHa7U7N5m}s{)4z)B3LOK0YBWt+~|iASjQyhBbQ#PZGf6JaFp9 zKY)xwc_rM)(iBhM|77?TnkKl?TRO(pK*Bv83Qe=0Wmzh6lnys2=0{ur(I2OZ}HrmEg>)?r(y`3 z&Kj<0JOe|I-GH~%ra^m(`@WKD9h_rWV+OuN|f&yM%$EAChX5bvykrFq77q?Wv^ z5ZA18dlWb=09LtE$1P)Hv$d5axIjT{V?CkErq^+k!vpC~g6ces2@MZVEhspnuBpi- zAb<|awx7@j4+2RcajSrgcyEtIZz_BW5QHS1_g4NKYa87<*K`~iri5B_p_N2}o{kQJ zAGxvs76`%+NR6GM>_wWnViW?JpU`s&-uU`x%EjSlYZR2B@fPgbyxD3I3Rm&@ADb0X%GJIAo zJikv?T;0IH<19Lk0FR4P!ge$ELiHv#4SQ1Etqc)-Bsf>{Z5~d(uMvIRQH=WCI*`Nz zEmGo}Q_$Mhe~TDz%6EC)^gdS#ILPh^KiSOQDfdJ3)mA+JM^JBdDlCASM|Rm(rx)UC z5TKVc_UXCYm#fR?Zm<-a8WLqq2#htRMzQYc`Kx{551T&$)+aHbQF@)D^rFU)86~jD z9VN<==zL_twmh#RZ4ZT~1e$1%{$--Zd2aPY5dc(+VxJ6jCy;N9@22;bSMZe>=Kn*B zOgy!et(h`r8yVT?l>ooZm3Y~nm;l`EWc}m+o;$*EbEI2R)K12+{1&gi8Sn*^D%bzlYlOy=~WuwW?e<2oAPZ;fJ2%tFHG#g z{5PU5OPBU$eglEy<2)}PuB(UMP?psZ1t`ZudZBi^oa^#L2vh&V62twg4~|b(d8zvA>5s4u8}0?|`#YqR#TueuDYK6*tiKn6>!Nxq{SS!&4UMh9zYITP7t}M^63J;L z(tbOXS1%Yk4eq4nck9pFw>S~EOQM#=xk16}Qq{|tNE2OI=fSJz4@EI{p8Tb79${ugBS0Nfz1K9d`O^#bet znd@;@Ru%woJhT`?|G~u|q}>&Q%9NCp1m9$#Yug~3)HQ>)Eu^m+k%b`GFr9g-2Su!W zTeEJ%QaBHXJFqK;7>}+kPqv^{B;NvQRf%+4co}!;CB%$^NL&zPTP4(j*fQWXK<`~W z%i7d-V3A7Cj$gi8NohzRPI+o@3ZNG)XKH*rtx!2=uCQlSIY!8Y;;+Fp@EX_b3sxwO*c_1>y{ZPju}UZSNzxShj44%b>bZ()w1Uf-ASSf zEIt+rqv@~C{7|>IOts9@w<%4fk&^^Edb1S_;X)g&mGBAQp>Fq*VSNLE1hgTleKNd)a1J=S(8m#J4(*H?%*?ez zuAr?7=9_hp&TbMi3RCC|1a5lNvadV@JaBKO*1JoUYKZ}B~dz@IVj z>8F5SiOAtc$WSogQXV*c^HFoUK{^P6(GVT0I`H1q3=Gl{-FHHI>2ZY9(93JI`((HR zQPEZ7wNVJkkU|n>G79P)k&~?%Y&%(NFG@Pk)q~1VLX*a~Lpi<9~J`$cpdi;=62EH1U^-*Y2sfe+xS$5f*cOnq?i?A*-uB>mQ*t|Kl}UDpLViF;KQZytovdA#Sj1xGchP>Xd2_ zvN<3u&dJXHdiMoN8w{xlZGbVvjf2w;(L>%22>2Nre?gAyH**0cM~0La&k916;#onU j>Uq=~@BKgjvEm_PzTQTsob?teE=uvdvRv9Z!~6dS?;+X} literal 12835 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 From e0bbd97a2df3c369e4411df87c6639fc1a2fc980 Mon Sep 17 00:00:00 2001 From: Sardar <160326696+saius02@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:35:02 +0200 Subject: [PATCH 03/17] zwischenstand --- .../data/tabular/plotting/_column_plotter.py | 3 +- .../data/tabular/plotting/_table_plotter.py | 560 ++++++++++-------- ...test_should_match_snapshot_dark[empty].png | Bin 6614 -> 6952 bytes ...snapshot_dark[multiple rows (numeric)].png | Bin 7149 -> 7314 bytes ...hould_match_snapshot_dark[non-numeric].png | Bin 7620 -> 7800 bytes ...match_snapshot_dark[one row (numeric)].png | Bin 6853 -> 6948 bytes ...ould_match_snapshot_dark[date grouped].png | Bin 0 -> 23361 bytes .../test_should_match_snapshot_dark[date].png | Bin 0 -> 22726 bytes ..._should_match_snapshot_dark[numerical].png | Bin 0 -> 15632 bytes ...pshot_dark[four columns (all numeric)].png | Bin 0 -> 10220 bytes ..._dark[four columns (some non-numeric)].png | Bin 0 -> 13882 bytes ...should_match_snapshot_dark[one column].png | Bin 0 -> 10037 bytes ...est_should_match_snapshot_dark[normal].png | Bin 0 -> 12814 bytes ...ould_match_snapshot_dark[four columns].png | Bin 0 -> 19445 bytes ...should_match_snapshot_dark[one column].png | Bin 0 -> 7545 bytes ...columns with compressed visualization].png | Bin 0 -> 12942 bytes ...shot_dark[functional multiple columns].png | Bin 0 -> 29525 bytes ...should_match_snapshot_dark[functional].png | Bin 0 -> 21824 bytes ..._dark[sorted grouped multiple columns].png | Bin 0 -> 35536 bytes ...ld_match_snapshot_dark[sorted grouped].png | Bin 0 -> 25503 bytes ...ark[unsorted grouped multiple columns].png | Bin 0 -> 37607 bytes ..._match_snapshot_dark[unsorted grouped].png | Bin 0 -> 31895 bytes ...should_match_snapshot_dark[functional].png | Bin 0 -> 13114 bytes ...t_should_match_snapshot_dark[multiple].png | Bin 0 -> 17496 bytes ...hould_match_snapshot_dark[overlapping].png | Bin 0 -> 11939 bytes .../plotting/test_moving_average_plot.py | 52 ++ .../tabular/plotting/test_plot_boxplots.py | 14 + .../plotting/test_plot_correlation_heatmap.py | 13 + .../tabular/plotting/test_plot_histograms.py | 68 +++ .../tabular/plotting/test_plot_lineplot.py | 32 + .../tabular/plotting/test_plot_scatterplot.py | 38 ++ 31 files changed, 535 insertions(+), 245 deletions(-) create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot_dark[date grouped].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot_dark[date].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot_dark[numerical].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[four columns (all numeric)].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[four columns (some non-numeric)].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[one column].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_correlation_heatmap/test_should_match_snapshot_dark[normal].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[four columns].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[one column].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[two columns with compressed visualization].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[functional multiple columns].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[functional].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped multiple columns].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped multiple columns].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[functional].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[multiple].png create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[overlapping].png diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 8efdbfa0a..208e8ae02 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -73,7 +73,7 @@ def _set_boxplot_colors(box, theme): else: for median in box["medians"]: median.set(color="orange", linewidth=1.5) - + for box_part in box["boxes"]: box_part.set(color="black", linewidth=1.5, facecolor="blue") @@ -153,6 +153,7 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] "xtick.color": "white", "ytick.color": "white", }) + return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 1483cc19a..cba8e7e71 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -1,7 +1,7 @@ from __future__ import annotations import warnings -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal from safeds._utils import _figure_to_image from safeds._validation import _check_columns_exist @@ -32,7 +32,7 @@ class TablePlotter: def __init__(self, table: Table): self._table: Table = table - def box_plots(self) -> Image: + def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a box plot for every numerical column. @@ -58,51 +58,73 @@ def box_plots(self) -> Image: from math import ceil import matplotlib.pyplot as plt - - columns = numerical_table.to_columns() - columns = [column._series.drop_nulls() for column in columns] - max_width = 3 - number_of_columns = len(columns) if len(columns) <= max_width else max_width - number_of_rows = ceil(len(columns) / number_of_columns) - - fig, axs = plt.subplots(nrows=number_of_rows, ncols=number_of_columns) - line = 0 - for i, column in enumerate(columns): - if i % number_of_columns == 0 and i != 0: - line += 1 - - if number_of_columns == 1: - axs.boxplot( - column, - patch_artist=True, - labels=[numerical_table.column_names[i]], - ) - break - - if number_of_rows == 1: - axs[i].boxplot( - column, - patch_artist=True, - labels=[numerical_table.column_names[i]], - ) - - else: - axs[line, i % number_of_columns].boxplot( - column, - patch_artist=True, - labels=[numerical_table.column_names[i]], - ) - - # removes unused ax indices, so there wont be empty plots - last_filled_ax_index = len(columns) % number_of_columns - for i in range(last_filled_ax_index, number_of_columns): - if number_of_rows != 1 and last_filled_ax_index != 0: - fig.delaxes(axs[number_of_rows - 1, i]) - - fig.tight_layout() - return _figure_to_image(fig) - - def correlation_heatmap(self) -> Image: + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + columns = numerical_table.to_columns() + columns = [column._series.drop_nulls() for column in columns] + max_width = 3 + number_of_columns = len(columns) if len(columns) <= max_width else max_width + number_of_rows = ceil(len(columns) / number_of_columns) + + fig, axs = plt.subplots(nrows=number_of_rows, ncols=number_of_columns) + line = 0 + for i, column in enumerate(columns): + if i % number_of_columns == 0 and i != 0: + line += 1 + + if number_of_columns == 1: + axs.boxplot( + column, + patch_artist=True, + labels=[numerical_table.column_names[i]], + ) + break + + if number_of_rows == 1: + axs[i].boxplot( + column, + patch_artist=True, + labels=[numerical_table.column_names[i]], + ) + + else: + axs[line, i % number_of_columns].boxplot( + column, + patch_artist=True, + labels=[numerical_table.column_names[i]], + ) + + # removes unused ax indices, so there wont be empty plots + last_filled_ax_index = len(columns) % number_of_columns + for i in range(last_filled_ax_index, number_of_columns): + if number_of_rows != 1 and last_filled_ax_index != 0: + fig.delaxes(axs[number_of_rows - 1, i]) + + fig.tight_layout() + + + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + return _figure_to_image(fig) + + + def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Plot a correlation heatmap for all numerical columns of this `Table`. @@ -120,41 +142,52 @@ 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 numpy as np - - only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) - - if self._table.row_count == 0: - warnings.warn( - "An empty table has been used. A correlation heatmap on an empty table will show nothing.", - stacklevel=2, - ) + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + import numpy as np + + only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) + + if self._table.row_count == 0: + warnings.warn( + "An empty table has been used. A correlation heatmap on an empty table will show nothing.", + stacklevel=2, + ) - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - message=( - "Attempting to set identical low and high (xlims|ylims) makes transformation singular;" - " automatically expanding." - ), - ) + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", + message=( + "Attempting to set identical low and high (xlims|ylims) makes transformation singular;" + " automatically expanding." + ), + ) - fig, ax = plt.subplots() - heatmap = plt.imshow( - only_numerical.corr().to_numpy(), - vmin=-1, - vmax=1, - cmap="coolwarm", - ) - ax.set_xticks(np.arange(len(only_numerical.columns)), rotation="vertical", labels=only_numerical.columns) - ax.set_yticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) - fig.colorbar(heatmap) + fig, ax = plt.subplots() + heatmap = plt.imshow( + only_numerical.corr().to_numpy(), + vmin=-1, + vmax=1, + cmap="coolwarm", + ) + ax.set_xticks(np.arange(len(only_numerical.columns)), rotation="vertical", labels=only_numerical.columns) + ax.set_yticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) + fig.colorbar(heatmap) - plt.tight_layout() + plt.tight_layout() + - return _figure_to_image(fig) + return _figure_to_image(fig) - def histograms(self, *, max_bin_count: int = 10) -> Image: + def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: """ Plot a histogram for every column. @@ -175,55 +208,65 @@ def histograms(self, *, max_bin_count: int = 10) -> Image: >>> image = table.plot.histograms() """ import matplotlib.pyplot as plt - import polars as pl - - n_cols = min(3, self._table.column_count) - n_rows = 1 + (self._table.column_count - 1) // n_cols - - if n_cols == 1 and n_rows == 1: - fig, axs = plt.subplots(1, 1, tight_layout=True) - one_col = True - else: - fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) - one_col = False - - col_names = self._table.column_names - for col_name, ax in zip(col_names, axs.flatten() if not one_col else [axs], strict=False): - column = self._table.get_column(col_name) - distinct_values = column.get_distinct_values() - - ax.set_title(col_name) - ax.set_xlabel("") - ax.set_ylabel("") - - if column.is_numeric and len(distinct_values) > max_bin_count: - min_val = (column.min() or 0) - 1e-6 # Otherwise the minimum value is not included in the first bin - max_val = column.max() or 0 - bin_count = min(max_bin_count, len(distinct_values)) - bins = [ - *(pl.Series(range(bin_count + 1)) / bin_count * (max_val - min_val) + min_val), - ] - - bars = [f"{round((bins[i] + bins[i + 1]) / 2, 2)}" for i in range(len(bins) - 1)] - hist = column._series.hist(bins=bins).slice(1, length=max_bin_count).get_column("count").to_numpy() - - ax.bar(bars, hist, edgecolor="black") - ax.set_xticks(range(len(hist)), bars, rotation=45, horizontalalignment="right") + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + import polars as pl + + n_cols = min(3, self._table.column_count) + n_rows = 1 + (self._table.column_count - 1) // n_cols + + if n_cols == 1 and n_rows == 1: + fig, axs = plt.subplots(1, 1, tight_layout=True) + one_col = True else: - value_counts = ( - column._series.drop_nulls().value_counts().sort(column.name).slice(0, length=max_bin_count) - ) - distinct_values = value_counts.get_column(column.name).cast(pl.String).to_numpy() - hist = value_counts.get_column("count").to_numpy() - ax.bar(distinct_values, hist, edgecolor="black") - ax.set_xticks(range(len(distinct_values)), distinct_values, rotation=45, horizontalalignment="right") - - for i in range(len(col_names), n_rows * n_cols): - fig.delaxes(axs.flatten()[i]) # Remove empty subplots - - return _figure_to_image(fig) - - def line_plot(self, x_name: str, y_names: list[str], show_confidence_interval: bool = True) -> Image: + fig, axs = plt.subplots(n_rows, n_cols, tight_layout=True, figsize=(n_cols * 3, n_rows * 3)) + one_col = False + + col_names = self._table.column_names + for col_name, ax in zip(col_names, axs.flatten() if not one_col else [axs], strict=False): + column = self._table.get_column(col_name) + distinct_values = column.get_distinct_values() + + ax.set_title(col_name) + ax.set_xlabel("") + ax.set_ylabel("") + + if column.is_numeric and len(distinct_values) > max_bin_count: + min_val = (column.min() or 0) - 1e-6 # Otherwise the minimum value is not included in the first bin + max_val = column.max() or 0 + bin_count = min(max_bin_count, len(distinct_values)) + bins = [ + *(pl.Series(range(bin_count + 1)) / bin_count * (max_val - min_val) + min_val), + ] + + bars = [f"{round((bins[i] + bins[i + 1]) / 2, 2)}" for i in range(len(bins) - 1)] + hist = column._series.hist(bins=bins).slice(1, length=max_bin_count).get_column("count").to_numpy() + + ax.bar(bars, hist, edgecolor="black") + ax.set_xticks(range(len(hist)), bars, rotation=45, horizontalalignment="right") + else: + value_counts = ( + column._series.drop_nulls().value_counts().sort(column.name).slice(0, length=max_bin_count) + ) + distinct_values = value_counts.get_column(column.name).cast(pl.String).to_numpy() + hist = value_counts.get_column("count").to_numpy() + ax.bar(distinct_values, hist, edgecolor="black") + ax.set_xticks(range(len(distinct_values)), distinct_values, rotation=45, horizontalalignment="right") + + for i in range(len(col_names), n_rows * n_cols): + fig.delaxes(axs.flatten()[i]) # Remove empty subplots + + return _figure_to_image(fig) + + def line_plot(self, x_name: str, y_names: list[str], show_confidence_interval: bool = True, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a line plot for two columns in the table. @@ -262,57 +305,67 @@ def line_plot(self, x_name: str, y_names: list[str], show_confidence_interval: b _plot_validation(self._table, x_name, y_names) import matplotlib.pyplot as plt - import polars as pl - - agg_list = [] - for name in y_names: - agg_list.append(pl.col(name).mean().alias(f"{name}_mean")) - agg_list.append(pl.count(name).alias(f"{name}_count")) - agg_list.append(pl.std(name, ddof=0).alias(f"{name}_std")) - grouped = self._table._lazy_frame.sort(x_name).group_by(x_name).agg(agg_list).collect() - - x = grouped.get_column(x_name) - y_s = [] - confidence_intervals = [] - for name in y_names: - y_s.append(grouped.get_column(name + "_mean")) - confidence_intervals.append( - 1.96 * grouped.get_column(name + "_std") / grouped.get_column(name + "_count").sqrt(), - ) - - fig, ax = plt.subplots() - for name, y in zip(y_names, y_s, strict=False): - ax.plot(x, y, label=name) - - if show_confidence_interval: - for y, conf in zip(y_s, confidence_intervals, strict=False): - ax.fill_between( - x, - y - conf, - y + conf, - color="lightblue", - alpha=0.15, + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + import polars as pl + + agg_list = [] + for name in y_names: + agg_list.append(pl.col(name).mean().alias(f"{name}_mean")) + agg_list.append(pl.count(name).alias(f"{name}_count")) + agg_list.append(pl.std(name, ddof=0).alias(f"{name}_std")) + grouped = self._table._lazy_frame.sort(x_name).group_by(x_name).agg(agg_list).collect() + + x = grouped.get_column(x_name) + y_s = [] + confidence_intervals = [] + for name in y_names: + y_s.append(grouped.get_column(name + "_mean")) + confidence_intervals.append( + 1.96 * grouped.get_column(name + "_std") / grouped.get_column(name + "_count").sqrt(), ) - if len(y_names) > 1: - name = "values" - else: - name = y_names[0] - ax.set( - xlabel=x_name, - ylabel=name, - ) - ax.legend() - ax.set_xticks(ax.get_xticks()) - ax.set_xticklabels( - ax.get_xticklabels(), - rotation=45, - horizontalalignment="right", - ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels - fig.tight_layout() - - return _figure_to_image(fig) - - def scatter_plot(self, x_name: str, y_names: list[str]) -> Image: + + fig, ax = plt.subplots() + for name, y in zip(y_names, y_s, strict=False): + ax.plot(x, y, label=name) + + if show_confidence_interval: + for y, conf in zip(y_s, confidence_intervals, strict=False): + ax.fill_between( + x, + y - conf, + y + conf, + color="lightblue", + alpha=0.15, + ) + if len(y_names) > 1: + name = "values" + else: + name = y_names[0] + ax.set( + xlabel=x_name, + ylabel=name, + ) + ax.legend() + ax.set_xticks(ax.get_xticks()) + ax.set_xticklabels( + ax.get_xticklabels(), + rotation=45, + horizontalalignment="right", + ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels + fig.tight_layout() + + return _figure_to_image(fig) + + def scatter_plot(self, x_name: str, y_names: list[str], *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a scatter plot for two columns in the table. @@ -349,37 +402,46 @@ def scatter_plot(self, x_name: str, y_names: list[str]) -> Image: _plot_validation(self._table, x_name, y_names) import matplotlib.pyplot as plt - - fig, ax = plt.subplots() - for y_name in y_names: - ax.scatter( - x=self._table.get_column(x_name)._series, - y=self._table.get_column(y_name)._series, - s=64, # marker size - linewidth=1, - edgecolor="white", - label=y_name, + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + fig, ax = plt.subplots() + for y_name in y_names: + ax.scatter( + x=self._table.get_column(x_name)._series, + y=self._table.get_column(y_name)._series, + s=64, # marker size + linewidth=1, + edgecolor="white", + label=y_name, + ) + if len(y_names) > 1: + name = "values" + else: + name = y_names[0] + ax.set( + xlabel=x_name, + ylabel=name, ) - if len(y_names) > 1: - name = "values" - else: - name = y_names[0] - ax.set( - xlabel=x_name, - ylabel=name, - ) - ax.legend() - ax.set_xticks(ax.get_xticks()) - ax.set_xticklabels( - ax.get_xticklabels(), - rotation=45, - horizontalalignment="right", - ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels - fig.tight_layout() - - return _figure_to_image(fig) - - def moving_average_plot(self, x_name: str, y_name: str, window_size: int) -> Image: + ax.legend() + ax.set_xticks(ax.get_xticks()) + ax.set_xticklabels( + ax.get_xticklabels(), + rotation=45, + horizontalalignment="right", + ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels + fig.tight_layout() + + return _figure_to_image(fig) + + def moving_average_plot(self, x_name: str, y_name: str, window_size: int, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a moving average plot for the y column and plot it by the x column in the table. @@ -414,45 +476,55 @@ def moving_average_plot(self, x_name: str, y_name: str, window_size: int) -> Ima >>> image = table.plot.moving_average_plot("a", "b", window_size = 2) """ import matplotlib.pyplot as plt - import numpy as np - import polars as pl - - _plot_validation(self._table, x_name, [y_name]) - for name in [x_name, y_name]: - if self._table.get_column(name).missing_value_count() >= 1: - raise ValueError( - f"there are missing values in column '{name}', use transformation to fill missing values " - f"or drop the missing values. For a moving average no missing values are allowed.", - ) - - # Calculate the moving average - mean_col = pl.col(y_name).mean().alias(y_name) - grouped = self._table._lazy_frame.sort(x_name).group_by(x_name).agg(mean_col).collect() - data = grouped - moving_average = data.select([pl.col(y_name).rolling_mean(window_size).alias("moving_average")]) - # set up the arrays for plotting - y_data_with_nan = moving_average["moving_average"].to_numpy() - nan_mask = ~np.isnan(y_data_with_nan) - y_data = y_data_with_nan[nan_mask] - x_data = data[x_name].to_numpy()[nan_mask] - fig, ax = plt.subplots() - ax.plot(x_data, y_data, label="moving average") - ax.set( - xlabel=x_name, - ylabel=y_name, - ) - ax.legend() - if self._table.get_column(x_name).is_temporal: - ax.set_xticks(x_data) # Set x-ticks to the x data points - ax.set_xticks(ax.get_xticks()) - ax.set_xticklabels( - ax.get_xticklabels(), - rotation=45, - horizontalalignment="right", - ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels - fig.tight_layout() - - return _figure_to_image(fig) + style = "dark_background" if theme == "dark" else "default" + with plt.style.context(style): + if theme == "dark": + plt.rcParams.update({ + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }) + import numpy as np + import polars as pl + + _plot_validation(self._table, x_name, [y_name]) + for name in [x_name, y_name]: + if self._table.get_column(name).missing_value_count() >= 1: + raise ValueError( + f"there are missing values in column '{name}', use transformation to fill missing values " + f"or drop the missing values. For a moving average no missing values are allowed.", + ) + + # Calculate the moving average + mean_col = pl.col(y_name).mean().alias(y_name) + grouped = self._table._lazy_frame.sort(x_name).group_by(x_name).agg(mean_col).collect() + data = grouped + moving_average = data.select([pl.col(y_name).rolling_mean(window_size).alias("moving_average")]) + # set up the arrays for plotting + y_data_with_nan = moving_average["moving_average"].to_numpy() + nan_mask = ~np.isnan(y_data_with_nan) + y_data = y_data_with_nan[nan_mask] + x_data = data[x_name].to_numpy()[nan_mask] + fig, ax = plt.subplots() + ax.plot(x_data, y_data, label="moving average") + ax.set( + xlabel=x_name, + ylabel=y_name, + ) + ax.legend() + if self._table.get_column(x_name).is_temporal: + ax.set_xticks(x_data) # Set x-ticks to the x data points + ax.set_xticks(ax.get_xticks()) + ax.set_xticklabels( + ax.get_xticklabels(), + rotation=45, + horizontalalignment="right", + ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels + fig.tight_layout() + + return _figure_to_image(fig) def _plot_validation(table: Table, x_name: str, y_names: list[str]) -> None: diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[empty].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[empty].png index 8b6fe63cb0bb62634b97b874bdd798027074c58b..3958a4aeb541f709bf07a49130571561c60b65ec 100644 GIT binary patch literal 6952 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 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[multiple rows (numeric)].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[multiple rows (numeric)].png index 47d5d759d47003376e8ac7eb852e565a1418121a..2a8a53eef98bf65866b073fa7586b3a14f6d641d 100644 GIT binary patch literal 7314 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 literal 7149 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 Z(O2T!2WTlM9{^v6ZH`+PeR}rG{|3eC1yuk5 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[non-numeric].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[non-numeric].png index 880a17f19c1bffd61bf0358105cd729b952c9659..52676b5dffac475fabe92d07d6da6ea56a0b5de3 100644 GIT binary patch literal 7800 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 diff --git a/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[one row (numeric)].png b/tests/safeds/data/tabular/containers/_column/__snapshots__/test_plot_histogram/test_should_match_snapshot_dark[one row (numeric)].png index c6d88d2dca9169a01fa4ecf3dbb1ed7deebd612a..4f91625abc993608f8fd1e567e5644189627a5aa 100644 GIT binary patch literal 6948 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 G|Nbw)x8N55 literal 6853 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�G+nwlOZu9z_zb1%aTYZ4 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

`NmvS9v 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped].png new file mode 100644 index 0000000000000000000000000000000000000000..51b62c352316a41be7f6a466850211b258a8f3f3 GIT binary patch literal 31895 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 G!~X;7xa83Q literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[functional].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[functional].png new file mode 100644 index 0000000000000000000000000000000000000000..e03ffc868604ebc76fa6da0fbef6acd43378b93b GIT binary patch literal 13114 zcmeHuXH-;Mx8=bc;Q|sQsi2}nK@mZMfgo@JL2^bwB^45ioXj8~k|j&dARrbQ6v;`l zgepLCC~_=Puj9LSyzbZi=Tubl!3eqQ!F&sk>Lq`t5CjxB)qX=@9Oh)3iienTJ@1zsF+E=@HT;kBz+qXKXbd>Kl2{h*k zhblU896$LkzSah(pczf8=%bR8cTJA7Lu4#hl3PIFa$Q+<65IIKk@7&fh_?}${Fsj; ztJ}j>BJV!NajiFPi_Q1UIMY|(@pcH$`H#4H>9b-;2OWaIGi*2*o_D2&eB%r z=jYGF>_?D~-z24^^puXQ6d@X)CwTe!1Iu6qmF&Gl`}(@N!e5yqwq&2Ys)o;^D+>1X zxdnGSaThs&AXiS1{Q-Y@Ma+eK=*&@a@=&b;Gw;~g*siSLo2nt1nOs8Fzg~7_!QWFD z>mV!3%R$ffAC^r~h|a_$edE?I*Gc{}oHgAH%LzAmK~IMqCTF_jFkt25>ryN2V}-BF+9%FD&U%fH*lm%*k{mo z@JzYmPuzLQk(KJ>y0DgztJ8m6L68OA>yh$QR8;4Acoe>|v7Q%XmsVC*Hg1U$QoeuR z0PDh1J+g+(_2x^f6lm-$$L@VD7LcRSZPr%N)YQy-(#C4qo0rs;MTQs@W$Tv6)_i@z zZ`pUPXlkw`aqcAdSaQjHplL_4417+-$Y_rBf!pmf*jgiwO=slTt4_2;OG=>6qIFo? zv$!6)GSwj+7#L_=-<}j09DLr5v_cu#tQI$40uSn$AImP83%vTcrEYt3nR7*y3|X+# zEwK+79W}0B6z2?buy`+2k<|EYe~EF6)fB%|?IHBz%a<>=7nrMOXs^<<&>{JGd86xt z9uBG&7MZhs1#<4BDfSF)YD#l)!&9eD6}s~>3SxqBgYMeXJvptCEC^!MYjHiCADg~C zT^F)>*j`3&_%d#Of+i*qeyPuSrvu-ay_(Nlq=lQesu!54PIaXC*ACRS1c@2GeEITT zteBfIyk%f?wC?cyVZ@VN_TIhs5tNj9zv{?}ei~7zNGSU=p&zs-Nc%Tfv>G|tA-+C7 zL7zTd2^YprONJdiapF`7eol?%E47&6_nMlwRl|S0sXABtjyVW}FP6#CD|2i=j8tk^ zTU+N12B=$IbcR1(o+?O>1O2)AgNUc#5r41uBQ5QC0`a?M%1dbp zm8a5#uSWX~c1Wv9wi7K&Qz@}}Hbppsv)rA#cXeq_pVmCL>zIdqqXHB}SC9D_u2XVSOJ`Nu89Kcu&;j!^?w*bZv?jD$k}p zrU)7x9hIGK%6BsUI~f}$Vm){iQaYyXCB9!3GyG|BJ?%ltyUw%+(hna#H2(JTsB)Pz zHeAq3uc(3!K?nvAkAcxaY|Q4;_0=&hW9+OR>C6{;g@hm^Rld9Kqi;Hd9y-b3 z*wj_Q8nbvbK`xBPW@Eun$aUjWVp5U}1o(w>=e`?+OrEvwDqCyl__LBzaif1%;cBtw#a58Eh6%wSCDYgLY4Am~rP=E^} zN)wBMg3iH%2lCOR0mE@sGz39r%ztlK&)1gcH^f)tZWYh>qrFW#!}JqjgXg zdRr475@KS_4saCoA(wM@k4fBJCzMy8N7QBQ6lK85ik*;cvYo%f@fna}?g{kA!_6z3PH5Kalv1hj7zHxPFcSg6kHgcmUNIv*ChS`;yU#3Arav zQg1N5^WmXmV&W<=>sl≥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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[multiple].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[multiple].png new file mode 100644 index 0000000000000000000000000000000000000000..51cb83530312f86dd4526d25e91ee2cf4c27b73f GIT binary patch literal 17496 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[overlapping].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_scatterplot/test_should_match_snapshot_dark[overlapping].png new file mode 100644 index 0000000000000000000000000000000000000000..96ed6018a476859a3fba21f6e463b92f82c9daff GIT binary patch literal 11939 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 e*g=oRy@Qrb None: + line_plot = table.plot.moving_average_plot(x_name, y_name, window_size, theme="dark") + assert line_plot == snapshot_png_image + @pytest.mark.parametrize( ("x", "y"), diff --git a/tests/safeds/data/tabular/plotting/test_plot_boxplots.py b/tests/safeds/data/tabular/plotting/test_plot_boxplots.py index f9f5b9bf5..1867efe75 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_boxplots.py +++ b/tests/safeds/data/tabular/plotting/test_plot_boxplots.py @@ -33,3 +33,17 @@ def test_should_raise_if_column_contains_non_numerical_values() -> None: def test_should_fail_on_empty_table() -> None: with pytest.raises(NonNumericColumnError): Table().plot.box_plots() + + +@pytest.mark.parametrize( + "table", + [ + Table({"A": [1, 2, 3]}), + Table({"A": [1, 2, 3], "B": ["A", "A", "Bla"], "C": [True, True, False], "D": [1.0, 2.1, 4.5]}), + Table({"A": [1, 2, 3], "B": [1.0, 2.1, 4.5], "C": [1, 2, 3], "D": [1.0, 2.1, 4.5]}), + ], + ids=["one column", "four columns (some non-numeric)", "four columns (all numeric)"], +) +def test_should_match_snapshot_dark(table: Table, snapshot_png_image: SnapshotAssertion) -> None: + boxplots = table.plot.box_plots(theme="dark") + assert boxplots == snapshot_png_image diff --git a/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py b/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py index deb55c9f1..b81b5be07 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py +++ b/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py @@ -22,3 +22,16 @@ def test_should_match_snapshot(table: Table, snapshot_png_image: SnapshotAsserti # match=r"An empty table has been used. A correlation heatmap on an empty table will show nothing.", # ): # Table().plot.correlation_heatmap() + + +@pytest.mark.parametrize( + "table", + [ + Table({"A": [1, 2, 3.5], "B": [0.2, 4, 77]}), + ], + ids=["normal"], +) +def test_should_match_snapshot_dark(table: Table, snapshot_png_image: SnapshotAssertion) -> None: + correlation_heatmap = table.plot.correlation_heatmap(theme="dark") + assert correlation_heatmap == snapshot_png_image + diff --git a/tests/safeds/data/tabular/plotting/test_plot_histograms.py b/tests/safeds/data/tabular/plotting/test_plot_histograms.py index 2b50b775f..0e6f10a93 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_histograms.py +++ b/tests/safeds/data/tabular/plotting/test_plot_histograms.py @@ -74,3 +74,71 @@ def test_should_match_snapshot(table: Table, snapshot_png_image: SnapshotAsserti def test_should_fail_on_empty_table() -> None: with pytest.raises(ZeroDivisionError): Table().plot.histograms() + + +@pytest.mark.parametrize( + "table", + [ + Table({"A": [1, 2, 3]}), + Table( + { + "A": [1, 2, 3, 3, 2, 4, 2], + "B": ["a", "b", "b", "b", "b", "b", "a"], + "C": [True, True, False, True, False, None, True], + "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", "two columns with compressed visualization"], +) +def test_should_match_snapshot_dark(table: Table, snapshot_png_image: SnapshotAssertion) -> None: + histograms = table.plot.histograms(theme="dark") + assert histograms == snapshot_png_image diff --git a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py index 5015abf4c..828ed6470 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py +++ b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py @@ -70,3 +70,35 @@ def test_should_raise_if_column_does_not_exist_error_message(x: str, y: str) -> table = Table({"A": [1, 2, 3], "B": [2, 4, 7]}) with pytest.raises(ColumnNotFoundError): table.plot.line_plot(x, [y]) + + +@pytest.mark.parametrize( + ("table", "x_name", "y_names"), + [ + (Table({"A": [1, 2, 3], "B": [2, 4, 7]}), "A", ["B"]), + (Table({"A": [1, 1, 2, 2], "B": [2, 4, 6, 8]}), "A", ["B"]), + (Table({"A": [2, 1, 3, 3, 1, 2], "B": [6, 2, 5, 5, 4, 8]}), "A", ["B"]), + (Table({"A": [1, 2, 3], "B": [2, 4, 7], "C": [1, 3, 5]}), "A", ["B", "C"]), + (Table({"A": [1, 1, 2, 2], "B": [2, 4, 6, 8], "C": [1, 3, 5, 6]}), "A", ["B", "C"]), + (Table({"A": [2, 1, 3, 3, 1, 2], "B": [6, 2, 5, 5, 4, 8], "C": [9, 7, 5, 3, 2, 1]}), "A", ["B", "C"]), + ], + ids=[ + "functional", + "sorted grouped", + "unsorted grouped", + "functional multiple columns", + "sorted grouped multiple columns", + "unsorted grouped multiple columns", + ], +) + +def test_should_match_snapshot_dark( + table: Table, + x_name: str, + y_names: list[str], + snapshot_png_image: SnapshotAssertion, +) -> None: + skip_if_os([os_mac]) + + line_plot = table.plot.line_plot(x_name, y_names, theme="dark") + assert line_plot == snapshot_png_image diff --git a/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py b/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py index 33d0170b5..b0aa88e07 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py +++ b/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py @@ -41,6 +41,44 @@ def test_should_match_snapshot( scatterplot = table.plot.scatter_plot(x_name, y_names) assert scatterplot == snapshot_png_image +@pytest.mark.parametrize( + ("table", "x_name", "y_names"), + [ + (Table({"A": [1, 2, 3], "B": [2, 4, 7]}), "A", ["B"]), + ( + Table( + { + "A": [1, 0.99, 0.99, 2], + "B": [1, 0.99, 1.01, 2], + }, + ), + "A", + ["B"], + ), + ( + Table( + {"A": [1, 0.99, 0.99, 2], "B": [1, 0.99, 1.01, 2], "C": [2, 2.99, 2.01, 3]}, + ), + "A", + ["B", "C"], + ), + ], + ids=[ + "functional", + "overlapping", + "multiple", + ], +) + +def test_should_match_snapshot_dark( + table: Table, + x_name: str, + y_names: list[str], + snapshot_png_image: SnapshotAssertion, +) -> None: + scatterplot = table.plot.scatter_plot(x_name, y_names, theme="dark") + assert scatterplot == snapshot_png_image + @pytest.mark.parametrize( ("table", "col1", "col2"), From 514ccdcea775283fcddeef625131c83468e59ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 19:07:33 +0200 Subject: [PATCH 04/17] Linterfehler gefixt --- src/safeds/data/tabular/plotting/_column_plotter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 208e8ae02..5a06ec3cf 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -54,7 +54,7 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: import matplotlib.pyplot as plt - def _set_boxplot_colors(box, theme): + def _set_boxplot_colors(box, theme) -> None: if theme == "dark": for median in box["medians"]: median.set(color="orange", linewidth=1.5) From 64da1760aaaae5b7c68792c55340cd9c1306ee49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 19:21:08 +0200 Subject: [PATCH 05/17] Linterproblem gefixt --- src/safeds/data/tabular/plotting/_column_plotter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 5a06ec3cf..6c606f0d5 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -54,7 +54,7 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: import matplotlib.pyplot as plt - def _set_boxplot_colors(box, theme) -> None: + def _set_boxplot_colors(box:dict, theme: str) -> None: if theme == "dark": for median in box["medians"]: median.set(color="orange", linewidth=1.5) From 9e3e3aeb8379ab2ca059387e28328f01cadae18a Mon Sep 17 00:00:00 2001 From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:22:42 +0000 Subject: [PATCH 06/17] style: apply automated linter fixes --- .../data/tabular/plotting/_column_plotter.py | 73 ++++----- .../data/tabular/plotting/_table_plotter.py | 144 +++++++++++------- .../containers/_column/test_plot_box_plot.py | 2 - .../containers/_column/test_plot_histogram.py | 3 +- .../containers/_column/test_plot_lag_plot.py | 1 + .../plotting/test_moving_average_plot.py | 1 + .../plotting/test_plot_correlation_heatmap.py | 1 - .../tabular/plotting/test_plot_lineplot.py | 1 - .../tabular/plotting/test_plot_scatterplot.py | 2 +- 9 files changed, 130 insertions(+), 98 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 6c606f0d5..7acd95c8d 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -54,7 +54,7 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: import matplotlib.pyplot as plt - def _set_boxplot_colors(box:dict, theme: str) -> None: + def _set_boxplot_colors(box: dict, theme: str) -> None: if theme == "dark": for median in box["medians"]: median.set(color="orange", linewidth=1.5) @@ -73,7 +73,7 @@ def _set_boxplot_colors(box:dict, theme: str) -> None: else: for median in box["medians"]: median.set(color="orange", linewidth=1.5) - + for box_part in box["boxes"]: box_part.set(color="black", linewidth=1.5, facecolor="blue") @@ -89,19 +89,23 @@ def _set_boxplot_colors(box:dict, theme: str) -> None: style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - "grid.color": "gray", - "grid.linewidth": 0.5, - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + "grid.color": "gray", + "grid.linewidth": 0.5, + }, + ) else: - plt.rcParams.update({ - "grid.linewidth": 0.5, - }) + plt.rcParams.update( + { + "grid.linewidth": 0.5, + }, + ) fig, ax = plt.subplots() box = ax.boxplot( @@ -118,7 +122,6 @@ def _set_boxplot_colors(box:dict, theme: str) -> None: return _figure_to_image(fig) - def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] = "light") -> Image: """ Create a histogram for the values in the column. @@ -128,7 +131,7 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] max_bin_count: The maximum number of bins to use in the histogram. Default is 10. theme: - The theme for the plot, either "dark" or "light". Default is "light" + The theme for the plot, either "dark" or "light". Default is "light" Returns ------- @@ -146,17 +149,17 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) - - return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) - + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) + return self._column.to_table().plot.histograms(max_bin_count=max_bin_count) def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Image: """ @@ -188,13 +191,15 @@ def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Im style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) if self._column.row_count > 0: _check_column_is_numeric(self._column, operation="create a lag plot") @@ -211,4 +216,4 @@ def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Im ) fig.tight_layout() - return _figure_to_image(fig) \ No newline at end of file + return _figure_to_image(fig) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 41677bd91..025994dd6 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -60,16 +60,19 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: from math import ceil import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) columns = numerical_table.to_columns() columns = [column._series.drop_nulls() for column in columns] max_width = 3 @@ -111,21 +114,21 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: fig.delaxes(axs[number_of_rows - 1, i]) fig.tight_layout() - style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) return _figure_to_image(fig) - def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Plot a correlation heatmap for all numerical columns of this `Table`. @@ -144,16 +147,19 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I # TODO: implement using matplotlib and polars # https://stackoverflow.com/questions/33282368/plotting-a-2d-heatmap import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) import numpy as np only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) @@ -180,12 +186,13 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I vmax=1, cmap="coolwarm", ) - ax.set_xticks(np.arange(len(only_numerical.columns)), rotation="vertical", labels=only_numerical.columns) + ax.set_xticks( + np.arange(len(only_numerical.columns)), rotation="vertical", 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) @@ -210,16 +217,19 @@ def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] >>> image = table.plot.histograms() """ import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) import polars as pl n_cols = min(3, self._table.column_count) @@ -261,14 +271,23 @@ def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] distinct_values = value_counts.get_column(column.name).cast(pl.String).to_numpy() hist = value_counts.get_column("count").to_numpy() ax.bar(distinct_values, hist, edgecolor="black") - ax.set_xticks(range(len(distinct_values)), distinct_values, rotation=45, horizontalalignment="right") + ax.set_xticks( + range(len(distinct_values)), distinct_values, rotation=45, horizontalalignment="right", + ) for i in range(len(col_names), n_rows * n_cols): fig.delaxes(axs.flatten()[i]) # Remove empty subplots return _figure_to_image(fig) - def line_plot(self, x_name: str, y_names: list[str], show_confidence_interval: bool = True, *, theme: Literal["dark", "light"] = "light") -> Image: + def line_plot( + self, + x_name: str, + y_names: list[str], + show_confidence_interval: bool = True, + *, + theme: Literal["dark", "light"] = "light", + ) -> Image: """ Create a line plot for two columns in the table. @@ -307,16 +326,19 @@ def line_plot(self, x_name: str, y_names: list[str], show_confidence_interval: b _plot_validation(self._table, x_name, y_names) import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) import polars as pl agg_list = [] @@ -404,16 +426,19 @@ def scatter_plot(self, x_name: str, y_names: list[str], *, theme: Literal["dark" _plot_validation(self._table, x_name, y_names) import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) fig, ax = plt.subplots() for y_name in y_names: ax.scatter( @@ -443,7 +468,9 @@ def scatter_plot(self, x_name: str, y_names: list[str], *, theme: Literal["dark" return _figure_to_image(fig) - def moving_average_plot(self, x_name: str, y_name: str, window_size: int, *, theme: Literal["dark", "light"] = "light") -> Image: + def moving_average_plot( + self, x_name: str, y_name: str, window_size: int, *, theme: Literal["dark", "light"] = "light", + ) -> Image: """ Create a moving average plot for the y column and plot it by the x column in the table. @@ -478,16 +505,19 @@ def moving_average_plot(self, x_name: str, y_name: str, window_size: int, *, the >>> image = table.plot.moving_average_plot("a", "b", window_size = 2) """ import matplotlib.pyplot as plt + style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): if theme == "dark": - plt.rcParams.update({ - "text.color": "white", - "axes.labelcolor": "white", - "axes.edgecolor": "white", - "xtick.color": "white", - "ytick.color": "white", - }) + plt.rcParams.update( + { + "text.color": "white", + "axes.labelcolor": "white", + "axes.edgecolor": "white", + "xtick.color": "white", + "ytick.color": "white", + }, + ) import numpy as np import polars as pl @@ -616,4 +646,4 @@ def _plot_validation(table: Table, x_name: str, y_names: list[str]) -> None: _check_columns_are_numeric(table, y_names) if not table.get_column(x_name).is_numeric and not table.get_column(x_name).is_temporal: - raise ColumnTypeError(x_name) \ No newline at end of file + raise ColumnTypeError(x_name) diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py index 6b99cbb50..089e4f7fe 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py @@ -41,8 +41,6 @@ def test_should_raise_if_column_contains_non_numerical_values() -> None: "multiple rows", ], ) - def test_should_match_snapshot_dark(column: Column, snapshot_png_image: SnapshotAssertion) -> None: box_plot = column.plot.box_plot(theme="dark") assert box_plot == snapshot_png_image - diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py b/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py index 85ec41a87..032fe2155 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py @@ -18,11 +18,11 @@ "non-numeric", ], ) - def test_should_match_snapshot(column: Column, snapshot_png_image: SnapshotAssertion) -> None: histogram = column.plot.histogram() assert histogram == snapshot_png_image + @pytest.mark.parametrize( "column", [ @@ -38,7 +38,6 @@ def test_should_match_snapshot(column: Column, snapshot_png_image: SnapshotAsser "non-numeric", ], ) - def test_should_match_snapshot_dark(column: Column, snapshot_png_image: SnapshotAssertion) -> None: histogram = column.plot.histogram(theme="dark") assert histogram == snapshot_png_image diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py index e84f49d11..429aa3f97 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_lag_plot.py @@ -27,6 +27,7 @@ def test_should_raise_if_column_contains_non_numerical_values() -> None: with pytest.raises(ColumnTypeError): column.plot.lag_plot(1) + @pytest.mark.parametrize( "column", [ diff --git a/tests/safeds/data/tabular/plotting/test_moving_average_plot.py b/tests/safeds/data/tabular/plotting/test_moving_average_plot.py index 2ead59000..04facd03a 100644 --- a/tests/safeds/data/tabular/plotting/test_moving_average_plot.py +++ b/tests/safeds/data/tabular/plotting/test_moving_average_plot.py @@ -58,6 +58,7 @@ def test_should_match_snapshot( line_plot = table.plot.moving_average_plot(x_name, y_name, window_size) assert line_plot == snapshot_png_image + @pytest.mark.parametrize( ("table", "x_name", "y_name", "window_size"), [ diff --git a/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py b/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py index b81b5be07..f2f04db96 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py +++ b/tests/safeds/data/tabular/plotting/test_plot_correlation_heatmap.py @@ -34,4 +34,3 @@ def test_should_match_snapshot(table: Table, snapshot_png_image: SnapshotAsserti def test_should_match_snapshot_dark(table: Table, snapshot_png_image: SnapshotAssertion) -> None: correlation_heatmap = table.plot.correlation_heatmap(theme="dark") assert correlation_heatmap == snapshot_png_image - diff --git a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py index 828ed6470..7ca2a2cbf 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py +++ b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py @@ -91,7 +91,6 @@ def test_should_raise_if_column_does_not_exist_error_message(x: str, y: str) -> "unsorted grouped multiple columns", ], ) - def test_should_match_snapshot_dark( table: Table, x_name: str, diff --git a/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py b/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py index b0aa88e07..4a1452274 100644 --- a/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py +++ b/tests/safeds/data/tabular/plotting/test_plot_scatterplot.py @@ -41,6 +41,7 @@ def test_should_match_snapshot( scatterplot = table.plot.scatter_plot(x_name, y_names) assert scatterplot == snapshot_png_image + @pytest.mark.parametrize( ("table", "x_name", "y_names"), [ @@ -69,7 +70,6 @@ def test_should_match_snapshot( "multiple", ], ) - def test_should_match_snapshot_dark( table: Table, x_name: str, From 17b0982edbb86cbdceecbf7c22175872c54262f2 Mon Sep 17 00:00:00 2001 From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:24:15 +0000 Subject: [PATCH 07/17] style: apply automated linter fixes --- .../data/tabular/plotting/_table_plotter.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 025994dd6..5ddcca1bf 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -187,7 +187,9 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I cmap="coolwarm", ) ax.set_xticks( - np.arange(len(only_numerical.columns)), rotation="vertical", labels=only_numerical.columns, + np.arange(len(only_numerical.columns)), + rotation="vertical", + labels=only_numerical.columns, ) ax.set_yticks(np.arange(len(only_numerical.columns)), labels=only_numerical.columns) fig.colorbar(heatmap) @@ -272,7 +274,10 @@ def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] hist = value_counts.get_column("count").to_numpy() ax.bar(distinct_values, hist, edgecolor="black") ax.set_xticks( - range(len(distinct_values)), distinct_values, rotation=45, horizontalalignment="right", + range(len(distinct_values)), + distinct_values, + rotation=45, + horizontalalignment="right", ) for i in range(len(col_names), n_rows * n_cols): @@ -469,7 +474,12 @@ def scatter_plot(self, x_name: str, y_names: list[str], *, theme: Literal["dark" return _figure_to_image(fig) def moving_average_plot( - self, x_name: str, y_name: str, window_size: int, *, theme: Literal["dark", "light"] = "light", + self, + x_name: str, + y_name: str, + window_size: int, + *, + theme: Literal["dark", "light"] = "light", ) -> Image: """ Create a moving average plot for the y column and plot it by the x column in the table. From 55c916f7439b0230ac3fd00aeff11635c58a81ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 19:36:56 +0200 Subject: [PATCH 08/17] Examples Fehlerhaft --- src/safeds/data/tabular/plotting/_column_plotter.py | 2 +- .../data/tabular/containers/_column/test_plot_box_plot.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 6c606f0d5..b5286608c 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -137,7 +137,7 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] Examples -------- - from safeds.data.tabular.containers import Column + >>> from safeds.data.tabular.containers import Column >>> column = Column("test", [1, 2, 3]) >>> histogram = column.plot.histogram() """ diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py index 6b99cbb50..1974ee2d9 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py @@ -3,7 +3,6 @@ from safeds.exceptions import ColumnTypeError from syrupy import SnapshotAssertion - @pytest.mark.parametrize( "column", [ From dab90e78ee32b952bb54301369829065ab65c16f Mon Sep 17 00:00:00 2001 From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:42:34 +0000 Subject: [PATCH 09/17] style: apply automated linter fixes --- .../safeds/data/tabular/containers/_column/test_plot_box_plot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py index 2dd8b3c7c..089e4f7fe 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_box_plot.py @@ -3,6 +3,7 @@ from safeds.exceptions import ColumnTypeError from syrupy import SnapshotAssertion + @pytest.mark.parametrize( "column", [ From 8b594dd85b6d9db4f7acf57c1d3ca6db9c2eee85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= <160327486+TobiasPluecker@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:35:10 +0200 Subject: [PATCH 10/17] Update src/safeds/data/tabular/plotting/_column_plotter.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/plotting/_column_plotter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 8847d1849..d8a936c40 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -131,7 +131,7 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] max_bin_count: The maximum number of bins to use in the histogram. Default is 10. theme: - The theme for the plot, either "dark" or "light". Default is "light" + The theme for the plot, either "dark" or "light". Default is "light". Returns ------- From 02ce0fe1904aa3031e686c3ca6c861effeb88bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 22:42:37 +0200 Subject: [PATCH 11/17] =?UTF-8?q?unn=C3=B6tiger=20Testcase=20auskommentier?= =?UTF-8?q?t=20entgernt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/safeds/data/tabular/plotting/test_moving_average_plot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/safeds/data/tabular/plotting/test_moving_average_plot.py b/tests/safeds/data/tabular/plotting/test_moving_average_plot.py index 04facd03a..eed04e567 100644 --- a/tests/safeds/data/tabular/plotting/test_moving_average_plot.py +++ b/tests/safeds/data/tabular/plotting/test_moving_average_plot.py @@ -10,7 +10,6 @@ ("table", "x_name", "y_name", "window_size"), [ (Table({"A": [1, 2, 3], "B": [2, 4, 7]}), "A", "B", 2), - # (Table({"A": [1, 1, 2, 2, 3, 3, 4, 4, 5, 5], "B": [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]}), "A", "B", 2), ( Table( { From 982c5a6edf68f03c8fd339a56058948870113a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 22:48:09 +0200 Subject: [PATCH 12/17] theme parameter documented --- src/safeds/data/tabular/plotting/_column_plotter.py | 7 +++++++ src/safeds/data/tabular/plotting/_table_plotter.py | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 8847d1849..03b44c3ed 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -33,6 +33,11 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a box plot for the values in the column. This is only possible for numeric columns. + Parameters + ---------- + theme: + The theme to use for the plot. Either "dark" or "light". + Returns ------- plot: @@ -169,6 +174,8 @@ def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Im ---------- lag: The amount of lag. + theme: + The theme for the plot, either "dark" or "light". Default is "light Returns ------- diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 5ddcca1bf..fa9243704 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -38,6 +38,11 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: """ Create a box plot for every numerical column. + Parameters + ---------- + theme: + The theme to use for the plot. Either "dark" or "light". + Returns ------- plot: From 3c3038ea8faceee4de287972317baa0d729ff986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= <160327486+TobiasPluecker@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:49:22 +0200 Subject: [PATCH 13/17] Update src/safeds/data/tabular/plotting/_table_plotter.py Co-authored-by: Lars Reimann --- src/safeds/data/tabular/plotting/_table_plotter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index fa9243704..19f24d11c 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -294,8 +294,8 @@ def line_plot( self, x_name: str, y_names: list[str], - show_confidence_interval: bool = True, *, + show_confidence_interval: bool = True, theme: Literal["dark", "light"] = "light", ) -> Image: """ From dd620f1ea6d672ff3fc08f3a47531d552eb0b6da Mon Sep 17 00:00:00 2001 From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> Date: Fri, 12 Jul 2024 20:50:59 +0000 Subject: [PATCH 14/17] style: apply automated linter fixes --- src/safeds/data/tabular/plotting/_column_plotter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 293f623a3..18e2b360b 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -37,7 +37,7 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: ---------- theme: The theme to use for the plot. Either "dark" or "light". - + Returns ------- plot: From a464fe6f5da729d1a9713a80ad8bbc345175e18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Fri, 12 Jul 2024 23:01:23 +0200 Subject: [PATCH 15/17] documentation and remove unnecessary comments --- .../data/tabular/plotting/_table_plotter.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 19f24d11c..cc7a43413 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -138,6 +138,11 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I """ Plot a correlation heatmap for all numerical columns of this `Table`. + Parameters + ---------- + theme: + The color theme of the plot. Default is "light". + Returns ------- plot: @@ -149,9 +154,9 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I >>> table = Table({"temperature": [10, 15, 20, 25, 30], "sales": [54, 74, 90, 206, 210]}) >>> image = table.plot.correlation_heatmap() """ - # TODO: implement using matplotlib and polars - # https://stackoverflow.com/questions/33282368/plotting-a-2d-heatmap + import matplotlib.pyplot as plt + import numpy as np style = "dark_background" if theme == "dark" else "default" with plt.style.context(style): @@ -165,7 +170,7 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I "ytick.color": "white", }, ) - import numpy as np + only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) @@ -211,6 +216,8 @@ def histograms(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] ---------- max_bin_count: The maximum number of bins to use in the histogram. Default is 10. + theme: + The color theme of the plot. Default is "light". Returns ------- @@ -309,6 +316,8 @@ def line_plot( The name(s) of the column(s) to be plotted on the y-axis. show_confidence_interval: If the confidence interval is shown, per default True. + theme: + The color theme of the plot. Default is "light". Returns ------- @@ -409,6 +418,8 @@ def scatter_plot(self, x_name: str, y_names: list[str], *, theme: Literal["dark" The name of the column to be plotted on the x-axis. y_names: The name(s) of the column(s) to be plotted on the y-axis. + theme: + The color theme of the plot. Default is "light". Returns ------- @@ -495,6 +506,8 @@ def moving_average_plot( The name of the column to be plotted on the x-axis. y_name: The name of the column to be plotted on the y-axis. + theme: + The color theme of the plot. Default is "light". Returns ------- From 2f003dd53f62b7f7913be55e0457b66eeadcdafb Mon Sep 17 00:00:00 2001 From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> Date: Fri, 12 Jul 2024 21:03:27 +0000 Subject: [PATCH 16/17] style: apply automated linter fixes --- src/safeds/data/tabular/plotting/_table_plotter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index cc7a43413..48be6528d 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -154,7 +154,6 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I >>> table = Table({"temperature": [10, 15, 20, 25, 30], "sales": [54, 74, 90, 206, 210]}) >>> image = table.plot.correlation_heatmap() """ - import matplotlib.pyplot as plt import numpy as np @@ -170,7 +169,6 @@ def correlation_heatmap(self, *, theme: Literal["dark", "light"] = "light") -> I "ytick.color": "white", }, ) - only_numerical = self._table.remove_non_numeric_columns()._data_frame.fill_null(0) From 962dc907154cf2a95893c23c2885c427848f8448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Pl=C3=BCcker?= Date: Sun, 14 Jul 2024 17:35:57 +0200 Subject: [PATCH 17/17] made the theme documentation consistent --- src/safeds/data/tabular/plotting/_column_plotter.py | 6 +++--- src/safeds/data/tabular/plotting/_table_plotter.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/safeds/data/tabular/plotting/_column_plotter.py b/src/safeds/data/tabular/plotting/_column_plotter.py index 18e2b360b..1ba568525 100644 --- a/src/safeds/data/tabular/plotting/_column_plotter.py +++ b/src/safeds/data/tabular/plotting/_column_plotter.py @@ -36,7 +36,7 @@ def box_plot(self, *, theme: Literal["dark", "light"] = "light") -> Image: Parameters ---------- theme: - The theme to use for the plot. Either "dark" or "light". + The color theme of the plot. Default is "light". Returns ------- @@ -136,7 +136,7 @@ def histogram(self, *, max_bin_count: int = 10, theme: Literal["dark", "light"] max_bin_count: The maximum number of bins to use in the histogram. Default is 10. theme: - The theme for the plot, either "dark" or "light". Default is "light". + The color theme of the plot. Default is "light". Returns ------- @@ -175,7 +175,7 @@ def lag_plot(self, lag: int, *, theme: Literal["dark", "light"] = "light") -> Im lag: The amount of lag. theme: - The theme for the plot, either "dark" or "light". Default is "light + The color theme of the plot. Default is "light". Returns ------- diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py index 48be6528d..6294a0827 100644 --- a/src/safeds/data/tabular/plotting/_table_plotter.py +++ b/src/safeds/data/tabular/plotting/_table_plotter.py @@ -41,7 +41,7 @@ def box_plots(self, *, theme: Literal["dark", "light"] = "light") -> Image: Parameters ---------- theme: - The theme to use for the plot. Either "dark" or "light". + The color theme of the plot. Default is "light". Returns -------

FUmH>@>8pU+nH0 zcOaG9x{kf|K8^}%K{Rmp#-r3KKXi>Wpc=I%e@OG_Z%{pjI{kQmzPokYAczf;i)+lLKR%m)Y8iT?k^BAo=eyhB%j|Gp7WJ^d zZWU1#(KM*b%9<3btAoo5Vq;=B0I0Gpe>g}6${1oi9*=svRMMacoc`Z3PITLPU`SjLVGUefs0r}vpk@4+ru}=iF!@D)#uq(mou=o>j zcZ6AQrV93*Ni>^m=i1S{LJvD0(2>7$TZ)>QvDyW*gzFJnAz6nYF!+ZWx&EqIiW(YG&Bi$?%> zK$@>ej7LUB1~;!@y z6Td#c;F6UOZW8grnG(f7og$a4LPlh8a4;-wP@YL$t2(tBFrNTf(QD%lRbQSp6+ojr<&fVhAUB0iq~wxBI`@y>t) z2XUB!C1k+Z^GG=TN!*P$zwFU*9RVq!yXME(?Ff6?xxMP^bXH$CV9By3}&qg9=XV4 z%^HncNk~XSqN9V;(%7F!*hj&heTcfK92oNNtLU$8&a&5nWD~tAL|9lDy)Fsv+kmiF z1)vM=;2?&Ju=dAkl9_-5{g~L6NIAcN2T(7HCUu{P+nDXFFGzZCp9Xlv-QiLXDSJv5 zmI(A}G3!!h>1P_gCdWc^_Qv?|y#H_sB^V&yP*GQhEKV3T7%jDl_gXw? z%9XNuL*NpEaOe@f(A@#J=KFWYePbh65v&wIJ~bev8QdWRKT3?4!F5&>uut1ZU0qyU z;!@!}((eB|j~F<;#*)^hH@x<@rp+K}o@rR=wB5bo=;}%@VgJ2z<;5tNX7#^g!mwa< za|&)lNezn90)!S!b(y--u|{q|Zplp1s9j2@IH z3?ta(jUhJ@`uy_K13$+8+LuDDvT4m^9(;h$OT7YqyU|*d%%IW>$PR?U6%4d+=T&dr z*2*kgAqJu%;$r(zIk<*~=gH|inEyU&ak0RNDH9SB%%Bw)UB<>wpS0_|$Lb%TP@f6h z^1|333htybR&^7Qf@Hx`Wy-?@+s4GnECpmY`P%Mv_!a%Du0 zkBv^@;apa)(g1Y{yW#>w}`oh5nX{$Wbq^Ubspxc_DX zYCYKPCb$vrIm*~ge716cG5=q+oNG**RT#$)NEwrCfUdfT8?=mpBI?F4iwr?%7pQD< zS%OYhpq9&k0K(Q?xR!A#EsW4XcBKO(6E`U!Fc2M=jj|g`2{R0dU@4Ii2#ysTOiTSA zD9I8Nzu7NM)13ExdwS0E{GZGDF$o8=&P_~I`t94tL@P;|{-O$dWB1zd<9qL=5m#5& zs)5*un3#2>p|R0~6m9W%1=9UCxMI?kgVbBSGK*kztI?^8i_OP{BxsHiBtaN(*!Y|kDvI>6p~zp5Nb3UmVSf$d8gFt#r<<@7j#1;{x+^(ee?K0+V2@sa{zM?h^^X# zEpIL_YOQkf@*-icNHz?m4PcpEki?SFVn{)R9-$orm>`nc?BI|PEU69pAyn?$PUyDdvo0Z3Br+!t>ci~- zod{Ki-PP@e&431ZN1^7_#G)IC!zjaco{VSpxV3s_SkWGXl#~>8^WhLk(ciy2#N+V> z@*UZf-8Ntu6&2Ne^JaCRoo;?=P#wD~StOz$G|Pp?LJ8lzAL*r&Vq|)0lb#qd2D0+W zrMvO9*Fx(Ba2cO83K$5T^5HXX-M?@7d2f-pq~v2(4Mx!e1l6yebBo!CW%|Y3IJZZo zs)7N?d(uXoF>svk!me<*T$Z!51)tAv%lJ!FwFf6wWRH2q9FQk|%YQG*|Mgp4*4fI+ V>v!_LOa`Br_;dGjls*wT{{Sidz19E# literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot_dark[numerical].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot_dark[numerical].png new file mode 100644 index 0000000000000000000000000000000000000000..dbbce1eb291461fb6f9dfd0b0848f9dfd4582511 GIT binary patch literal 15632 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[four columns (all numeric)].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[four columns (all numeric)].png new file mode 100644 index 0000000000000000000000000000000000000000..0c93ca8afd112b57218926c50b7c34e8af422ccc GIT binary patch literal 10220 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 bk~NPXwrPv(N&l&&H@w9p|0Q9(s| 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[one column].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_boxplots/test_should_match_snapshot_dark[one column].png new file mode 100644 index 0000000000000000000000000000000000000000..be46ce227d3eb4ff3a5ed6fec5b612acb342615e GIT binary patch literal 10037 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%0DJ> z@P&T=!_%DWDXbAkaUj|sHipwnv2F%oLb)&)?7kW1E`wyKMJeiw2*H&0-dO4ceS~?# x6;R9m#t_1>K#zje1pVDQ|D(14Uw$?vmf+T@j{Iar$VTAjh^e^=<-qwH{{~3PxY7Us literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_correlation_heatmap/test_should_match_snapshot_dark[normal].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_correlation_heatmap/test_should_match_snapshot_dark[normal].png new file mode 100644 index 0000000000000000000000000000000000000000..7957cc10d200a9b3fe841851cd5bb8b13a696cc0 GIT binary patch literal 12814 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 ay71$<*L%LV2T?$cB9daVqRE#uAO0Whc7F)~ literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[four columns].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[four columns].png new file mode 100644 index 0000000000000000000000000000000000000000..dc45552d365ed643f71fb3b2fad6d4b58805c9d3 GIT binary patch literal 19445 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
Jn=4LcwO=k`~Rj-&hX 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 G<9`7y(FW}R literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[two columns with compressed visualization].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_histograms/test_should_match_snapshot_dark[two columns with compressed visualization].png new file mode 100644 index 0000000000000000000000000000000000000000..2d0f238323731e9dac8b17b8649c7094d9975053 GIT binary patch literal 12942 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[functional multiple columns].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[functional multiple columns].png new file mode 100644 index 0000000000000000000000000000000000000000..d7580a7f9ad77b43d101165d8b0d88ac2e4216ba GIT binary patch literal 29525 zcmafbbzD_l*X^deyStSx=>{=K0SRd-NkO`#rIi+GMM6U9PEkNQln#+j>GH09e7}3Y z``zb#@A*A{JU`E2@3q!mYtAvo9CJr$-dDxLrpAUK2=BIW6bU|6;l>+~ z68PxW89-6+Kj7jp5)lz4rkEqKGBY!e2;K;Szcvg4>8TfD40(eK%!L0mmYB~0 z=zFb{G&K2M`%4L5t+Z9YdMaQlsi-h>aoyhFgopjSstoG25{#h|LZ_2(PmoX#mVEjP zx5jA}n<;cm3!ZP7tqBsX&|}=GTIYCa-(yB$VNxn8Ds9zX&xVGE_YXg@hvU;>L*GAI zM|Z)irZKxFrVh>8l!)YNpWL|-7-kjVFLH|yK$k*58P}C&P-I!en#>!t{5dwHyqxb*v(HidNxF~?J}oV++ZE-xO1Mjl zyTs&tw$alJ&&wrZuk%B@yIE3HkeQQH9GA|!w#i9~Z?DCAKG_UnGqZzLG33-6AkLp5 z@BH|VOfWgUZpWYYcBQL!kM=|E3v!n*Y_g%ZcPO4rRjr%uu5NAN3JHDMGPkpPsD_1O zYGJ`lFB=fk6VI^Ro6JKg8z6P}?p=QK4%DK2u->=d-H#AG4H(ojn5a_FzI)^No9Ab( z6A{0NEz|c~RBZy5pBJ{LYyZ?+8yOl>kBp4CU5VR$`Di%T8K%txGGMW*~_uvtP6#E7B!D zU0zY8;=x5nN9TM{Od3>L8&r7jHM)+D4(%;Br6nuySi}0pI%tpY&}lVW>p*P}G)%o3 z%N3tkg?4=%3sEO;<27l>vFLtbe03ov?Q__+Ia!Vbxw^W7-Q1nPr05kz3t|U%GWA5y z7qV#00$r>Ew!($)y|I`xzJ%*`McS%5G~5p%jZE?OD~CUi`_lv{g&xO@34qPdIzHjV zd49=HC*ji&=|hgMVdFW2hnXOeGNttu5o`{bP%JHRO~f(qK74wHi6c!B(|KoxXg^cG z{Rk3LF=hRdzOKCi0pw!7Ykpcb6&adl8}-T#|L=XM#*Ku-W=Fy_Nk7S{D=_;RPcAN* z^H~)X-l4mfj|irTKdl6*B;x3T=|?#f%JM_R;R4fo-_%>BKms#T) z#n}3Ha>(W4l*;R-X_RNV>FvzBPb=YwoM?5!!O%Qu+JcnFCMu>%IMeu#yD}qIa{11q}9zBihYcpcni%UKV`UnjP75 zt8?Gubz%}BpNH^=4&?Xj6J;hiOsE-R&T$0mgdjdehK{};bOhxluf)@jEs#*no;=Z9i%(BV%2>Y8E78MqtEbJ)%|%NC8yU#nhEP{>(YqOh{=@E!Juh)`uN6LY@$iY<-@ zGTe2EW-Go*{pE|iw|AJN+0c6Q92MGjuGBR8&TbQOQyQ8=B7LR zR1K%`Rpzr>g3Ge#^By&Yrhby#$s$&aWFAkA4^DWH+bD2kay& zD)B}Sic7JpxTL`wW~_FVP;pd61;4P<4CT|+fw1UkoZcj^kjO|(<7OYSR~#BC67&Ek z)T7TzTEfRnSU_GuS2*s5QItc^eMX(4BnfJNbetS&@2hi>cN*Do>!aXAfF;0$7$?W& zcd15)0=oF2wogV(d&XPg9G<&snK9RRh;zB};^9|t>SnM&K7kJUTJ_a=w)aqw6d>uE!|>K>8?ICZz_V%>reS+qs1r}B91>>KMB5BELM zEv}|aX%{|mgAId2Gz6I8RK+EGS79Pd;2~L!0nHrAVhmdI5FH5`FIgSFMf_q-Ho3Am zeAsD#^HDCX;K-<}eJ6wXRnPr`x2$)-ZRAU^7cNTTH#h8is^$k@>6>sc=QY_*)pDT! z5hU>mN00O;K`LjXuk+Xt78DYC8>doVKzDB~FfT6;pg)I+uH~M1w);AJbIx=WR8(B9 z#LUdvstxDoYqA%3kVR|3}m(sdt@!b@Ud7XAL9RqXtliz6zTMQuGD~=G z(X)hy^#md6BP4+^h2Xk6@wD`GCK;J)hFzN{PhtRCP-K5aX3@~W6e?$B#X5LNL^Mp1 z_;qDX)SI^99yJc+BJma
?P< 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped multiple columns].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped multiple columns].png new file mode 100644 index 0000000000000000000000000000000000000000..c18a5383956bf67066c42e954a9f659344a0255e GIT binary patch literal 35536 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 literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[sorted grouped].png new file mode 100644 index 0000000000000000000000000000000000000000..78f2b4a5ccfbaf2d569ffcc4cee271fc72f96c95 GIT binary patch literal 25503 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 GUHm6%h5tYR literal 0 HcmV?d00001 diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped multiple columns].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_plot_lineplot/test_should_match_snapshot_dark[unsorted grouped multiple columns].png new file mode 100644 index 0000000000000000000000000000000000000000..94dfdf58846a792ef24e98ca56cc0450869ce09b GIT binary patch literal 37607 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