Я не уверен, что назову наблюдаемое поведение неожиданным.В первом случае вы предоставляете даты переменной x графика, поэтому он будет отображать столбцы в эти даты.Во втором случае вы предоставляете некоторые числа переменной x, поэтому она будет отображать числа.
Поскольку вы не сказали, кого из них вы предпочитаете, решение состоит в том, чтобы сделать их обоих визуально равными.Тем не менее, соответствующая концепция отличается.
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
import datetime
x = [datetime.datetime(1943,3, 13,12,0,0),
datetime.datetime(1943,3, 13,12,5,0),
datetime.datetime(1943,3, 13,12,10,0),
datetime.datetime(1943,3, 13,12,15,0),
datetime.datetime(1943,3, 13,12,20,0),
datetime.datetime(1943,3, 13,12,25,0),
datetime.datetime(1943,3, 13,12,30,0),
datetime.datetime(1943,3, 13,12,35,0)]
y = [1,2,3,4,2,1,3,4]
# plot numeric plot
plt.figure()
plt.bar(x,y, width=4./24/60) # 4 minutes wide bars
plt.gca().xaxis.set_major_formatter(DateFormatter("%H:%M"))
# Plot categorical plot
plt.figure()
plt.bar(range(0,len(x)),y, width=0.8) # 0.8 units wide bars
plt.xticks(range(0,len(x)), [d.strftime("%H:%M") for d in x])
plt.show()
![enter image description here](https://i.stack.imgur.com/kxNbC.png)
Однако разница между концепциями будет более очевидной при использовании различных данных,
x = [datetime.datetime(1943,3, 13,12,0,0),
datetime.datetime(1943,3, 13,12,5,0),
datetime.datetime(1943,3, 13,12,15,0),
datetime.datetime(1943,3, 13,12,25,0),
datetime.datetime(1943,3, 13,12,30,0),
datetime.datetime(1943,3, 13,12,35,0),
datetime.datetime(1943,3, 13,12,45,0),
datetime.datetime(1943,3, 13,12,50,0)]
![enter image description here](https://i.stack.imgur.com/fnogT.png)