-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Rectangle patch added to a datetime x-axis is plotted with the wrong width #10349
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
Comments
I'm going to close because this isn't a bug. import matplotlib
matplotlib.use('Qt5Agg')
import pandas as pd
import matplotlib.pyplot as mpp
import matplotlib.patches as patches
import matplotlib.dates as mdates
import datetime
import numpy as np
data=dict()
data['timestamps'] = [datetime.datetime(2018,2,1)+datetime.timedelta(days=x) for x in range(0,10)]
data['Requests'] = np.array([5,4,7,3,5,4,5,6,7,8])
fig,ax = mpp.subplots()
ax.plot(data['timestamps'], data['Requests'])
print(mdates.date2num(datetime.datetime(2018,2,2,0,0,0)))
ax.add_patch(patches.Rectangle(
(mdates.date2num(datetime.datetime(2018,2,2,0,0,0)), ax.get_ylim()[0]),
2., ax.get_ylim()[1]))
mpp.show() |
Well FWIW, the following seems to be working with the master branch (but not with Matplotlib 2.1.2): import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from datetime import datetime, timedelta
data = pd.DataFrame({
"Timestamp":pd.date_range(start=datetime(2018,1,30,0,0,0),
end=datetime(2018,2,8,0,0,0),freq='d'),
"Requests":[5,4,7,3,5,4,5,6,7,8]})
fig, ax = plt.subplots()
ax.plot(data.Timestamp, data.Requests)
xy = datetime(2018,2,2,0,0,0), ax.get_ylim()[0]
w, h = timedelta(days=2), ax.get_ylim()[1] - ax.get_ylim()[0]
ax.add_patch(Rectangle(xy, w, h))
fig.show() (Just changed the |
Oh, so it does! I was getting some bizarre error, but its gone now! Good job.. |
Looks correct - I must have had my git repository in some strange state that didn't include that PR... My workaround works until 2.2 comes out... |
Bug report
Bug summary
When adding a
Rectangle
patch to a plot with a datetime x-axis the width of the patch is plotted wrong.Code for reproduction
Actual outcome
I'm expecting a patch with a width of two days to appear on the plot, instead the patch fills the whole plot to the right rim.
Calling
ax.patches[0].get_width()
correctly returnsdatetime.datetime(2018, 2, 4, 0, 0)
.It doesn't matter if you use
datetime.datetime
,np.datetime64
, orpd.Timestamp
, the results are the same.EDIT: To get the correct width of two days, width really just has to set to 2.
Matplotlib version
Libraries installed with Conda, channels: defaults, conda-forge, anaconda-fusion
The text was updated successfully, but these errors were encountered: