-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Fix automatic xlims in line plots #16600
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
Conversation
So this breaks 18 Tests:
These tests hardcode expectations from previous MPL defaults. It is only the second commit (which allows MPL to apply its new defaults) that breaks the tests. Do they need a second set of expected results depending on which MPL version is used? Or can we simply update the expected results to what current MPL produces? The existing tests do not yet cover the case of unsorted x axis (the subject of the first commit). This will need new tests. Is a single test sufficient or do we need different instances for datetimelike/DataFrame/Series? |
Thanks for this. Your changes look correct.
I think we test on an old matplotlib (1.3.1) on python 2.7, and the most recent matplotlib otherwise. So yes, ideally we would cover both. If it's excessively difficult, you can raise skiptests for older matplotlibs where nescessary.
I think just a test for line plots covering a few cases
should be sufficient. We'll also need a release note. If you rebase on master, there should be a |
Actually, it's probably best to do this for 0.21.0, not 0.20.3, since the xlim will be now following matplotlib 2's. |
e4a7700
to
ce6bcb1
Compare
Codecov Report
@@ Coverage Diff @@
## master #16600 +/- ##
==========================================
+ Coverage 90.93% 90.95% +0.01%
==========================================
Files 161 161
Lines 49266 49267 +1
==========================================
+ Hits 44801 44810 +9
+ Misses 4465 4457 -8
Continue to review full report at Codecov.
|
Codecov Report
@@ Coverage Diff @@
## master #16600 +/- ##
==========================================
- Coverage 91.22% 91.2% -0.02%
==========================================
Files 163 163
Lines 49624 49625 +1
==========================================
- Hits 45269 45260 -9
- Misses 4355 4365 +10
Continue to review full report at Codecov.
|
So the codecov decrease in plotting/_tool.py is actually the point of one of the patches – xlims should only be adjusted with older matplotlib. If you prefer this PR to be split into two (one for wrong xlims and one for MPL xlim defaults), or if you have other comments, let me know. |
That may be inaccurate. I don't recall which versions of matplotlib are installed on the runs that report code coverage. It should still be being tested on other runs. |
can you rebase / update according to comments |
I think you'll just need a rebase. IIRC, things looked pretty good last time I looked. |
rebased |
can you rebase / update once again |
Two new tests check interaction of non-monotonic x data and xlims: test_frame / test_unsorted_index_lims test_series / test_unsorted_index_xlim
* Do not assume that xdata is sorted. * Use numpy.nanmin() and numpy.nanmax() instead.
* Avoid setting xlims since recent matplotlib already does it correctly * and we should let it apply its default styles where possible
Matplotlib 2.0 uses new defaults that cause some of our tests to fail. This adds appropriate new sets of expected results to the following tests in tests/plotting/test_datetimelike.py: test_finder_daily test_finder_quarterly test_finder_annual test_finder_hourly test_finder_minutely test_finder_monthly test_format_timedelta_ticks_narrow test_format_timedelta_ticks_wide
Matplotlib 2.0 by default now adds some padding between the boundaries of the data and the boundaries of the plot. This causes some of our tests to fail if we don't relax them slightly. modified: pandas/tests/plotting/test_datetimelike.py test_irregular_ts_shared_ax_xlim test_mixed_freq_regular_first test_mixed_freq_regular_first_df test_secondary_y_irregular_ts_xlim test_secondary_y_non_ts_xlim test_secondary_y_regular_ts_xlim modified: pandas/tests/plotting/test_frame.py test_area_lim test_line_lim modified: pandas/tests/plotting/test_series.py test_ts_area_lim test_ts_line_lim
rebased |
Thanks @nmartensen! (sorry about the extra rebase) |
* BUG: set correct xlims for lines (pandas-dev#11471, pandas-dev#11310) * Do not assume that xdata is sorted. * Use numpy.nanmin() and numpy.nanmax() instead. * BUG: Let new MPL automatically determine xlims (pandas-dev#15495) * Avoid setting xlims since recent matplotlib already does it correctly * and we should let it apply its default styles where possible * TST: plotting: update expected results for matplotlib 2 Matplotlib 2.0 uses new defaults that cause some of our tests to fail. This adds appropriate new sets of expected results to the following tests in tests/plotting/test_datetimelike.py: test_finder_daily test_finder_quarterly test_finder_annual test_finder_hourly test_finder_minutely test_finder_monthly test_format_timedelta_ticks_narrow test_format_timedelta_ticks_wide * TST: plotting: Relax some tests to work with matplotlib 2.0 Matplotlib 2.0 by default now adds some padding between the boundaries of the data and the boundaries of the plot. This causes some of our tests to fail if we don't relax them slightly. modified: pandas/tests/plotting/test_datetimelike.py test_irregular_ts_shared_ax_xlim test_mixed_freq_regular_first test_mixed_freq_regular_first_df test_secondary_y_irregular_ts_xlim test_secondary_y_non_ts_xlim test_secondary_y_regular_ts_xlim modified: pandas/tests/plotting/test_frame.py test_area_lim test_line_lim modified: pandas/tests/plotting/test_series.py test_ts_area_lim test_ts_line_lim * TST: Add lineplot tests with unsorted x data Two new tests check interaction of non-monotonic x data and xlims: test_frame / test_unsorted_index_lims test_series / test_unsorted_index_xlim * DOC: lineplot/xlims whatsnew entry for v0.21.0
* BUG: set correct xlims for lines (pandas-dev#11471, pandas-dev#11310) * Do not assume that xdata is sorted. * Use numpy.nanmin() and numpy.nanmax() instead. * BUG: Let new MPL automatically determine xlims (pandas-dev#15495) * Avoid setting xlims since recent matplotlib already does it correctly * and we should let it apply its default styles where possible * TST: plotting: update expected results for matplotlib 2 Matplotlib 2.0 uses new defaults that cause some of our tests to fail. This adds appropriate new sets of expected results to the following tests in tests/plotting/test_datetimelike.py: test_finder_daily test_finder_quarterly test_finder_annual test_finder_hourly test_finder_minutely test_finder_monthly test_format_timedelta_ticks_narrow test_format_timedelta_ticks_wide * TST: plotting: Relax some tests to work with matplotlib 2.0 Matplotlib 2.0 by default now adds some padding between the boundaries of the data and the boundaries of the plot. This causes some of our tests to fail if we don't relax them slightly. modified: pandas/tests/plotting/test_datetimelike.py test_irregular_ts_shared_ax_xlim test_mixed_freq_regular_first test_mixed_freq_regular_first_df test_secondary_y_irregular_ts_xlim test_secondary_y_non_ts_xlim test_secondary_y_regular_ts_xlim modified: pandas/tests/plotting/test_frame.py test_area_lim test_line_lim modified: pandas/tests/plotting/test_series.py test_ts_area_lim test_ts_line_lim * TST: Add lineplot tests with unsorted x data Two new tests check interaction of non-monotonic x data and xlims: test_frame / test_unsorted_index_lims test_series / test_unsorted_index_xlim * DOC: lineplot/xlims whatsnew entry for v0.21.0
git diff upstream/master --name-only -- '*.py' | flake8 --diff