Add test_barh to test_datetime.py#27084
Conversation
There was a problem hiding this comment.
Thank you for opening your first PR into Matplotlib!
If you have not heard from us in a week or so, please leave a new comment below and that should bring it to our attention. Most of our reviewers are volunteers and sometimes things fall through the cracks.
You can also join us on gitter for real-time discussion.
For details on testing, writing docs, and our review process, please see the developer guide
We strive to be a welcoming and open project. Please follow our Code of Conduct.
ksunden
left a comment
There was a problem hiding this comment.
See comment from #27033 (review):
(Copied here for convenience, note that it was written originally for bar, so swap horizontal/vertical etc, but the sentiment is the same)
I think the bar graphs with dates on the vertical (for bar, horizonatal for barh) axis should be given a bit more care here. That there is an implicit 0 mark, which results in 1970-01-01 is not a particularly good representation of a bar plot.
I think that for this, there should be a bottom argument specified as a datetime and then using a timedelta instead of a datetime for the heights, as indicated by the bar docstring
Here is some code I wrote for someone who had started working on this but never opened a PR:
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime, timedelta
import matplotlib as mpl
mpl.rcParams["date.converter"] = 'concise'
fig, (ax1, ax2) = plt.subplots(2, 1, layout='constrained')
price_date = np.array([ datetime(2020, 6, 30),
datetime(2020, 7, 22),
datetime(2020, 8, 3),
datetime(2020, 9, 14)], dtype=np.datetime64)
price_close = [8800, 2600, 8500, 7400]
start_date = np.datetime64(datetime(2020, 6, 1))
ax1.bar(price_date, price_close, width=np.timedelta64(4, "D"))
ax2.bar(np.arange(4), price_date-start_date, bottom=start_date)Note the start_date and price_date-start_date in this example.
|
I would also rather explictly avoid having the times be in 1970 to make sure we arent falling into certain traps with datetimes. |
|
Thank you so much for your notes and sample code, I appreciate the help! |
|
I have made a few fixes.
|
|
Thanks @CozyFrog! Congratulations on your first PR to Matplotlib 🎉 We hope to hear from you again. |

PR summary
I have added a datetime/timedelta smoke test for
Axes.barhinlib/matplotlib/tests/test_datetime.py.This addresses the
Axes.barhtask from #26864.The image below is the plot generated from this smoke test/example code.

PR checklist