[seaborn] 05/14: Add test module for distribution plots

Andreas Tille tille at debian.org
Fri Jan 20 15:00:39 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to tag v0.2.1
in repository seaborn.

commit 23410c8674a6cc62fb75b56cd517b1ccba95055e
Author: mwaskom <mwaskom at stanford.edu>
Date:   Wed Dec 25 19:57:20 2013 -0800

    Add test module for distribution plots
---
 seaborn/tests/test_distributions.py | 163 ++++++++++++++++++++++++++++++++++++
 1 file changed, 163 insertions(+)

diff --git a/seaborn/tests/test_distributions.py b/seaborn/tests/test_distributions.py
new file mode 100644
index 0000000..1b74aeb
--- /dev/null
+++ b/seaborn/tests/test_distributions.py
@@ -0,0 +1,163 @@
+import numpy as np
+import pandas as pd
+import nose.tools as nt
+import numpy.testing as npt
+
+from .. import distributions as dist
+
+
+class TestBoxReshaping(object):
+    """Tests for function that preps boxplot/violinplot data."""
+    n_total = 60
+    rs = np.random.RandomState(0)
+    x = rs.randn(n_total / 3, 3)
+    x_df = pd.DataFrame(x, columns=pd.Series(list("XYZ"), name="big"))
+    y = pd.Series(rs.randn(n_total), name="y_data")
+    g = pd.Series(rs.choice(list("abc"), n_total), name="small")
+    df = pd.DataFrame(dict(y=y, g=g))
+
+    def test_1d_values(self):
+        """Test boxplot prep for 1D data in various forms."""
+        x_1d_array = self.x.ravel()
+        vals_1d_array = dist._box_reshape(x_1d_array, None, None, None)[0]
+        nt.assert_equal(len(vals_1d_array), 1)
+        nt.assert_equal(len(vals_1d_array[0]), self.n_total)
+
+        x_1d_list = x_1d_array.tolist()
+        vals_1d_list = dist._box_reshape(x_1d_list, None, None, None)[0]
+        nt.assert_equal(len(vals_1d_list), 1)
+        nt.assert_equal(len(vals_1d_list[0]), self.n_total)
+
+    def test_list_of_array_values(self):
+        """Test boxplot prep for 2D data that is a list of arrays."""
+        x_list = self.x.T.tolist()
+        vals = dist._box_reshape(x_list, None, None, None)[0]
+        nt.assert_equal(len(vals), 3)
+        lengths = [len(v_i) for v_i in vals]
+        nt.assert_equal(lengths, [self.n_total / 3] * 3)
+
+    def test_array_values(self):
+        """Test boxplot prep for a basic array input."""
+        vals = dist._box_reshape(self.x, None, None, None)[0]
+        nt.assert_equal(np.shape(vals), (3, self.n_total / 3))
+        npt.assert_array_equal(vals, self.x.T)
+
+    def test_dataframe_values(self):
+        """Test boxplot prep for a DataFrame input."""
+        vals = dist._box_reshape(self.x_df, None, None, None)[0]
+        nt.assert_equal(np.shape(vals), (3, self.n_total / 3))
+        npt.assert_array_equal(vals, self.x.T)
+
+    def test_series_groupby(self):
+        """Test boxplot groupby using a series of data labels."""
+        vals = dist._box_reshape(self.df.y, self.df.g, None, None)[0]
+        nt.assert_equal(len(vals), 3)
+        want_lengths = pd.value_counts(self.df.g)[["a", "b", "c"]]
+        got_lengths = [len(a) for a in vals]
+        npt.assert_array_equal(want_lengths, got_lengths)
+
+    def test_series_groupby_order(self):
+        """Test a series-based groupby with a forced ordering."""
+        order = ["c", "a", "b"]
+        vals = dist._box_reshape(self.df.y, self.df.g, None, order)[0]
+        want_lengths = pd.value_counts(self.df.g)[order]
+        got_lengths = [len(a) for a in vals]
+        npt.assert_array_equal(want_lengths, got_lengths)
+
+    def test_function_groupby(self):
+        """Test boxplot groupby using a grouping function."""
+        grouper = lambda ix: self.df.y.ix[ix] > 0
+        vals = dist._box_reshape(self.df.y, grouper, None, None)[0]
+        nt.assert_equal(len(vals), 2)
+        low, high = vals
+        nt.assert_true(low.max() <= 0)
+        nt.assert_true(high.min() > 0)
+
+    def test_dict_groupby(self):
+        """Test boxplot groupby using a dictionary."""
+        grouper = {i: "A" if i % 2 else "B" for i in self.df.y.index}
+        vals = dist._box_reshape(self.df.y, grouper, None, None)[0]
+        nt.assert_equal(len(vals), 2)
+        a, b = vals
+        npt.assert_array_equal(self.df.y.iloc[1::2], a)
+        npt.assert_array_equal(self.df.y.iloc[::2], b)
+
+    def test_1d_labels(self):
+        """Test boxplot labels for 1D data."""
+        x_1d_array = self.x.ravel()
+        vals, xlabel, ylabel, names = dist._box_reshape(x_1d_array,
+                                                        None, None, None)
+        nt.assert_is(xlabel, None)
+        nt.assert_is(ylabel, None)
+        nt.assert_equal(names, [1])
+
+        vals, xlabel, ylabel, names = dist._box_reshape(x_1d_array,
+                                                        None, ["A"], None)
+
+    def test_array_labels(self):
+        """Test boxplot labels for a basic array."""
+        vals, xlabel, ylabel, names = dist._box_reshape(self.x,
+                                                        None, None, None)
+        nt.assert_is(xlabel, None)
+        nt.assert_is(ylabel, None)
+        nt.assert_equal(names, list(range(1, 4)))
+
+        want_names = list("ABC")
+        vals, xlabel, ylabel, names = dist._box_reshape(self.x,
+                                                        None, want_names, None)
+        nt.assert_equal(names, want_names)
+
+    def test_dataframe_labels(self):
+        """Test boxplot labels with DataFrame."""
+        vals, xlabel, ylabel, names = dist._box_reshape(self.x_df,
+                                                        None, None, None)
+        nt.assert_equal(xlabel, self.x_df.columns.name)
+        nt.assert_equal(ylabel, None)
+        npt.assert_array_equal(names, self.x_df.columns)
+
+    def test_ordered_dataframe_labels(self):
+        """Test boxplot labels with DataFrame and specified order."""
+        order = list("ZYX")
+        vals, xlabel, ylabel, names = dist._box_reshape(self.x_df,
+                                                        None, None, order)
+        nt.assert_equal(xlabel, self.x_df.columns.name)
+        npt.assert_array_equal(names, order)
+
+    def test_groupby_labels(self):
+        """Test labels with groupby vals."""
+        vals, xlabel, ylabel, names = dist._box_reshape(self.y, self.g,
+                                                        None, None)
+        nt.assert_equal(xlabel, self.g.name)
+        nt.assert_equal(ylabel, self.y.name)
+        npt.assert_array_equal(names, sorted(self.g.unique()))
+
+    def test_ordered_groupby_labels(self):
+        """Test labels with groupby vals and specified order."""
+        order = list("BAC")
+        vals, xlabel, ylabel, names = dist._box_reshape(self.y, self.g,
+                                                        order, None)
+        nt.assert_equal(xlabel, self.g.name)
+        nt.assert_equal(ylabel, self.y.name)
+        npt.assert_array_equal(names, order)
+
+    def test_pandas_names_override(self):
+        """Test that names can override those inferred from Pandas objects."""
+        want_names = ["ex", "why", "zee"]
+        vals, xlabel, ylabel, names = dist._box_reshape(self.x_df, None,
+                                                        want_names, None)
+        nt.assert_equal(names, want_names)
+
+        vals, xlabel, ylabel, names = dist._box_reshape(self.y, self.g,
+                                                        want_names, None)
+        nt.assert_equal(names, want_names)
+
+    def test_bad_order_length(self):
+        """Test for error when order and names lengths mismatch."""
+        with nt.assert_raises(ValueError):
+            dist._box_reshape(self.x_df, None, range(5), range(6))
+
+    def test_bad_order_type(self):
+        """Test for error when trying to order with a vanilla array."""
+        with nt.assert_raises(ValueError):
+            dist._box_reshape(self.x, None, None, range(5))
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/seaborn.git



More information about the debian-science-commits mailing list