Я использую Python 2, а следующий код просто использует некоторые примеры данных, мои фактические данные могут иметь различную длину и могут быть не детальными.
import numpy as np
import datetime
import matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x_values = [datetime.datetime(2018, 11, 8, 11, 16),
datetime.datetime(2018, 11, 8, 11, 17),
datetime.datetime(2018, 11, 8, 11, 18),
datetime.datetime(2018, 11, 8, 11, 19),
datetime.datetime(2018, 11, 8, 11, 20),
datetime.datetime(2018, 11, 8, 11, 21),
datetime.datetime(2018, 11, 8, 11, 22),
datetime.datetime(2018, 11, 8, 11, 23),
datetime.datetime(2018, 11, 8, 11, 24),
datetime.datetime(2018, 11, 8, 11, 25),
datetime.datetime(2018, 11, 8, 11, 26),
datetime.datetime(2018, 11, 8, 11, 27),
datetime.datetime(2018, 11, 8, 11, 28),
datetime.datetime(2018, 11, 8, 11, 29),
datetime.datetime(2018, 11, 8, 11, 30),
datetime.datetime(2018, 11, 8, 11, 31)]
y_values = [1392.1017964071857,
1392.2814371257484,
1392.37125748503,
1227.6802721088436,
1083.1,
1317.0461538461539,
1393.059880239521,
1393.4011976047905,
1393.491017964072,
1393.8502994011976,
1318.3461538461538,
1229.4965986394557,
1394.2095808383233,
1394.3892215568862,
1394.6586826347304,
1394.688622754491]
rects1 = ax.bar(x_values, y_values)
fig.tight_layout()
plt.show()
Как мне автоматически установить ширину полос? Как это я получаю следующее:
![no width set[1]](https://i.stack.imgur.com/W6iB1.png)
Если я установлю ширину 0,0006, то для данных примера это будет выглядеть хорошо:
![width manually set to 0.0006[2]](https://i.stack.imgur.com/WwnDv.png)
из которого я понял, что matplotlib измеряет ось х в днях (поскольку 0,0007 дней - это почти ровно 1 минута, что соответствует моим временным интервалам, а 0,0006 - промежутки между барами), но это не хорошо, если я получу ежечасные значения или секунды, или недели и т. д. Конечно, есть возможность обрабатывать это автоматически?