-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
ERR: Better error message for missing matplotlib #20538
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,8 +44,9 @@ | |
try: | ||
from pandas.plotting import _converter | ||
except ImportError: | ||
pass | ||
_HAS_MPL = False | ||
else: | ||
_HAS_MPL = True | ||
if get_option('plotting.matplotlib.register_converters'): | ||
_converter.register(explicit=True) | ||
|
||
|
@@ -97,6 +98,9 @@ def __init__(self, data, kind=None, by=None, subplots=False, sharex=None, | |
secondary_y=False, colormap=None, | ||
table=False, layout=None, **kwds): | ||
|
||
if not _HAS_MPL: | ||
raise ImportError("matplotlib is required for plotting.") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we just write a separate function for this check? You use this same code 4 times. |
||
|
||
_converter._WARN = False | ||
self.data = data | ||
self.by = by | ||
|
@@ -2264,6 +2268,9 @@ def hist_frame(data, column=None, by=None, grid=True, xlabelsize=None, | |
... }, index= ['pig', 'rabbit', 'duck', 'chicken', 'horse']) | ||
>>> hist = df.hist(bins=3) | ||
""" | ||
if not _HAS_MPL: | ||
raise ImportError("matplotlib is required for plotting.") | ||
|
||
_converter._WARN = False | ||
if by is not None: | ||
axes = grouped_hist(data, column=column, by=by, ax=ax, grid=grid, | ||
|
@@ -2403,6 +2410,9 @@ def grouped_hist(data, column=None, by=None, ax=None, bins=50, figsize=None, | |
------- | ||
axes: collection of Matplotlib Axes | ||
""" | ||
if not _HAS_MPL: | ||
raise ImportError("matplotlib is required for plotting.") | ||
|
||
_converter._WARN = False | ||
|
||
def plot_group(group, ax): | ||
|
@@ -2469,6 +2479,9 @@ def boxplot_frame_groupby(grouped, subplots=True, column=None, fontsize=None, | |
>>> grouped = df.unstack(level='lvl1').groupby(level=0, axis=1) | ||
>>> boxplot_frame_groupby(grouped, subplots=False) | ||
""" | ||
if not _HAS_MPL: | ||
raise ImportError("matplotlib is required for plotting.") | ||
|
||
_converter._WARN = False | ||
if subplots is True: | ||
naxes = len(grouped) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,14 @@ | |
from pandas.tests.plotting.common import TestPlotBase, _check_plot_works | ||
|
||
|
||
@td.skip_if_mpl | ||
def test_import_error_message(): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's reference the issue number here. |
||
df = DataFrame({"A": [1, 2]}) | ||
|
||
with tm.assert_raises_regex(ImportError, 'matplotlib is required'): | ||
df.plot() | ||
|
||
|
||
@td.skip_if_no_mpl | ||
class TestSeriesPlots(TestPlotBase): | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -160,6 +160,8 @@ def decorated_func(func): | |
|
||
skip_if_no_mpl = pytest.mark.skipif(_skip_if_no_mpl(), | ||
reason="Missing matplotlib dependency") | ||
skip_if_mpl = pytest.mark.skipif(not _skip_if_no_mpl(), | ||
reason="matplotlib is pressent") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we have a test build that does not have matplotlib ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pressent --> present |
||
skip_if_mpl_1_5 = pytest.mark.skipif(_skip_if_mpl_1_5(), | ||
reason="matplotlib 1.5") | ||
xfail_if_mpl_2_2 = pytest.mark.xfail(_skip_if_mpl_2_2(), | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
move to Plotting section