Skip to content Skip to sidebar Skip to footer

Floating Bar Chart

I'm trying to make a plot where the x-axis is time and the y-axis is a bar chart that will have the bars covering a certain time period like this: ________

Solution 1:

You could use plt.barh:

import datetime as DT
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

start= [DT.datetime(2000,1,1)+DT.timedelta(days=i) for i in (2,0,3)]
end= [s+DT.timedelta(days=i) for s,i in zip(start, [15,7,10])]
start= mdates.date2num(start)
end= mdates.date2num(end)
yval = [1,2,3]
width =end-start

fig, ax = plt.subplots()
ax.barh(bottom=yval, width=width, left=start, height=0.3)
xfmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(xfmt)
# autorotate the dates
fig.autofmt_xdate()
plt.show()

yields

enter image description here

Post a Comment for "Floating Bar Chart"