Próbowałem działki prostokąt na wykresie z datetime osi x, stosując następujący kod:Jak narysować prostokąt na osi datetime za pomocą matplotlib?
from datetime import datetime, timedelta
from matplotlib.patches import Rectangle
import matplotlib.pyplot as plt
# Create new plot
fig = plt.figure()
ax = fig.add_subplot(111)
# Create rectangle
startTime = datetime.now()
width = timedelta(seconds = 1)
endTime = startTime + width
rect = Rectangle((startTime, 0), width, 1, color='yellow')
# Plot rectangle
ax.add_patch(rect) ### ERROR HERE!!! ###
plt.xlim([startTime, endTime])
plt.ylim([0, 1])
plt.show()
Jednakże pojawia się błąd:
TypeError: unsupported operand type(s) for +: 'float' and 'datetime.timedelta'
co się dzieje nie tak? (Używam wersji macplotlib 1.0.1)
Pamiętaj, że jeśli daty na osi X pochodzą z 'pand', musisz najpierw przekonwertować na pythona na datę i godzinę. Wiersz 'start = mdates.date2num (startTime)' miałby wówczas postać 'start = mdates.date2num (startTime.to_pydatetime())'. To samo dotyczy "końca". – Luis