Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Add test_barh to test_datetime.py#27084
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
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.
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 uson gitter for real-time discussion.
For details on testing, writing docs, and our review process, please seethe developer guide
We strive to be a welcoming and open project. Please follow ourCode of Conduct.
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.
See comment from#27033 (review):
(Copied here for convenience, note that it was written originally forbar
, so swap horizontal/vertical etc, but the sentiment is the same)
I think the bar graphs with dates on the vertical (forbar
, horizonatal forbarh
) axis should be given a bit more care here. That there is an implicit0
mark, which results in1970-01-01
is not a particularly good representation of a bar plot.
I think that for this, there should be abottom
argument specified as a datetime and then using atimedelta
instead of adatetime
for the heights, as indicated by thebar
docstring
Here is some code I wrote for someone who had started working on this but never opened a PR:
importmatplotlib.pyplotaspltimportnumpyasnpfromdatetimeimportdatetime,timedeltaimportmatplotlibasmplmpl.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 thestart_date
andprice_date-start_date
in this example.
I would also rather explictlyavoid 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.barh
inlib/matplotlib/tests/test_datetime.py
.This addresses the
Axes.barh
task from#26864.The image below is the plot generated from this smoke test/example code.

PR checklist