Skip to content

Rectangle patch added to a datetime x-axis is plotted with the wrong width #10349

@Khris777

Description

@Khris777

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

import pandas as pd
import matplotlib.pyplot as mpp
import matplotlib.patches as patches
import datetime

data = pd.DataFrame({"Timestamp":pd.date_range(start=datetime.datetime(2018,1,30,0,0,0),end=datetime.datetime(2018,2,8,0,0,0),freq='d'),"Requests":[5,4,7,3,5,4,5,6,7,8]})
fig,ax = mpp.subplots()
ax.plot(data.Timestamp,data.Requests)
ax.add_patch(patches.Rectangle((datetime.datetime(2018,2,2,0,0,0),ax.get_ylim()[0]),datetime.datetime(2018,2,2,0,0,0)+datetime.timedelta(days=2),ax.get_ylim()[1]))
fig.show()

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 returns datetime.datetime(2018, 2, 4, 0, 0).

It doesn't matter if you use datetime.datetime, np.datetime64, or pd.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

  • Operating system: Windows 10
  • Matplotlib version: 2.1.2
  • Matplotlib backend: Qt5Agg
  • Python version: 3.6.4
  • Other libraries: Pandas 0.22.0, Numpy 1.13.3

Libraries installed with Conda, channels: defaults, conda-forge, anaconda-fusion

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions