Я использую ticker.FuncFormatter для преобразования времени, измеренного в секундах, в формат H: M: S для отметок оси X.Тем не менее, тики по-прежнему показывают необработанные секунды, что наводит меня на мысль, что ax.xaxis.set_major_formatter не использовался.Затем я попытался установить для major_formatter значение NullFormatter (), и в результирующем графике действительно не отображаются значения на отметках оси X.Вы можете увидеть в моем коде, где я рекомендовал NullFormatter, который я использовал для тестирования.
Так что я должен вызывать ticker.FuncFormatter неправильно или не в том месте, но пара часов устранения неполадок не привела кфрукты.Я надеюсь, что кто-то здесь имеет больше опыта с matplotlib и может увидеть мою ошибку.
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt, mpld3
import csv
import datetime
probe1 = [123, 128, 192, 178, 210, 223, 252, 268]
probe2 = [121, 135, 164, 212, 245, 298, 301, 303]
secs = [1, 1800, 3600, 5400, 7200, 10800, 14403, 21645]
def hms(x, pos=None):
td = datetime.timedelta(seconds = x)
hours = int((td.days * 24))
hoursPlus = int(td.seconds / 3600)
hours = hours + hoursPlus
minutes = int(((td.seconds - (hoursPlus * 3600)) / 60))
seconds = int(td.seconds - (minutes * 60) - (hoursPlus * 3600))
tickString = str(hours) + ":" + str(minutes) + ":" + str(seconds)
print(tickString)
return tickString
formatter = plt.FuncFormatter(hms)
fig, ax = plt.subplots(figsize=(12, 7))
plt.plot(secs, probe1, label='Probe 1')
plt.plot(secs, probe2, label='Probe 2')
ax.xaxis.set_major_formatter(formatter)
plt.text(secs[-1]+1, probe1[-1]+1, probe1[-1], fontsize=15)
plt.text(secs[-1]+1, probe2[-1]+1, probe2[-1], fontsize=15)
plt.xlabel('Time (sec)')
plt.ylabel('Temp (F)')
plt.title('Temp History')
plt.legend(loc=2)
mpld3.save_html(fig, "test_example2.html")