93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
""" Test cases for DataFrame.plot """
 | 
						|
 | 
						|
import numpy as np
 | 
						|
import pytest
 | 
						|
 | 
						|
import pandas.util._test_decorators as td
 | 
						|
 | 
						|
from pandas import DataFrame
 | 
						|
import pandas._testing as tm
 | 
						|
from pandas.tests.plotting.common import TestPlotBase
 | 
						|
 | 
						|
pytestmark = pytest.mark.slow
 | 
						|
 | 
						|
 | 
						|
@td.skip_if_no_mpl
 | 
						|
class TestDataFramePlotsGroupby(TestPlotBase):
 | 
						|
    def setup_method(self, method):
 | 
						|
        TestPlotBase.setup_method(self, method)
 | 
						|
        import matplotlib as mpl
 | 
						|
 | 
						|
        mpl.rcdefaults()
 | 
						|
 | 
						|
        self.tdf = tm.makeTimeDataFrame()
 | 
						|
        self.hexbin_df = DataFrame(
 | 
						|
            {
 | 
						|
                "A": np.random.uniform(size=20),
 | 
						|
                "B": np.random.uniform(size=20),
 | 
						|
                "C": np.arange(20) + np.random.uniform(size=20),
 | 
						|
            }
 | 
						|
        )
 | 
						|
 | 
						|
    def _assert_ytickslabels_visibility(self, axes, expected):
 | 
						|
        for ax, exp in zip(axes, expected):
 | 
						|
            self._check_visible(ax.get_yticklabels(), visible=exp)
 | 
						|
 | 
						|
    def _assert_xtickslabels_visibility(self, axes, expected):
 | 
						|
        for ax, exp in zip(axes, expected):
 | 
						|
            self._check_visible(ax.get_xticklabels(), visible=exp)
 | 
						|
 | 
						|
    @pytest.mark.parametrize(
 | 
						|
        "kwargs, expected",
 | 
						|
        [
 | 
						|
            # behavior without keyword
 | 
						|
            ({}, [True, False, True, False]),
 | 
						|
            # set sharey=True should be identical
 | 
						|
            ({"sharey": True}, [True, False, True, False]),
 | 
						|
            # sharey=False, all yticklabels should be visible
 | 
						|
            ({"sharey": False}, [True, True, True, True]),
 | 
						|
        ],
 | 
						|
    )
 | 
						|
    def test_groupby_boxplot_sharey(self, kwargs, expected):
 | 
						|
        # https://github.com/pandas-dev/pandas/issues/20968
 | 
						|
        # sharey can now be switched check whether the right
 | 
						|
        # pair of axes is turned on or off
 | 
						|
        df = DataFrame(
 | 
						|
            {
 | 
						|
                "a": [-1.43, -0.15, -3.70, -1.43, -0.14],
 | 
						|
                "b": [0.56, 0.84, 0.29, 0.56, 0.85],
 | 
						|
                "c": [0, 1, 2, 3, 1],
 | 
						|
            },
 | 
						|
            index=[0, 1, 2, 3, 4],
 | 
						|
        )
 | 
						|
        axes = df.groupby("c").boxplot(**kwargs)
 | 
						|
        self._assert_ytickslabels_visibility(axes, expected)
 | 
						|
 | 
						|
    @pytest.mark.parametrize(
 | 
						|
        "kwargs, expected",
 | 
						|
        [
 | 
						|
            # behavior without keyword
 | 
						|
            ({}, [True, True, True, True]),
 | 
						|
            # set sharex=False should be identical
 | 
						|
            ({"sharex": False}, [True, True, True, True]),
 | 
						|
            # sharex=True, xticklabels should be visible
 | 
						|
            # only for bottom plots
 | 
						|
            ({"sharex": True}, [False, False, True, True]),
 | 
						|
        ],
 | 
						|
    )
 | 
						|
    def test_groupby_boxplot_sharex(self, kwargs, expected):
 | 
						|
        # https://github.com/pandas-dev/pandas/issues/20968
 | 
						|
        # sharex can now be switched check whether the right
 | 
						|
        # pair of axes is turned on or off
 | 
						|
 | 
						|
        df = DataFrame(
 | 
						|
            {
 | 
						|
                "a": [-1.43, -0.15, -3.70, -1.43, -0.14],
 | 
						|
                "b": [0.56, 0.84, 0.29, 0.56, 0.85],
 | 
						|
                "c": [0, 1, 2, 3, 1],
 | 
						|
            },
 | 
						|
            index=[0, 1, 2, 3, 4],
 | 
						|
        )
 | 
						|
        axes = df.groupby("c").boxplot(**kwargs)
 | 
						|
        self._assert_xtickslabels_visibility(axes, expected)
 |