Matplotlib помечает ось X метками времени, удаляя лишние 0 в микросекундах - PullRequest
0 голосов
/ 01 декабря 2018

Я строю графики в течение нескольких секунд, и у меня есть время в качестве меток на оси X.Вот единственный способ получить правильные отметки времени.Однако на конце есть куча нулей.Любая идея, как избавиться от них ??

plt.style.use('seaborn-whitegrid')
df['timestamp'] = pd.to_datetime(df['timestamp'])
fig, ax = plt.subplots(figsize=(8,4))
seconds=MicrosecondLocator(interval=500000)
myFmt = DateFormatter("%S:%f")
ax.plot(df['timestamp'], df['vibration(g)_0'],  c='blue')
ax.xaxis.set_major_locator(seconds)
ax.xaxis.set_major_formatter(myFmt)

plt.gcf().autofmt_xdate()
plt.show()

Это производит это изображение.Все выглядит идеально, за исключением всех дополнительных нулей.Как я могу избавиться от них, сохраняя при этом 5?

enter image description here

1 Ответ

0 голосов
/ 01 декабря 2018

Полагаю, вы захотите просто вырезать последние 5 цифр из строки.Это также то, что отвечает на python datetime: округлить / усечь число цифр в микросекундах предложить.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import MicrosecondLocator, DateFormatter
from matplotlib.ticker import FuncFormatter

x = np.datetime64("2018-11-30T00:00") + np.arange(1,4, dtype="timedelta64[s]")

fig, ax = plt.subplots(figsize=(8,4))
seconds=MicrosecondLocator(interval=500000)
myFmt = DateFormatter("%S:%f")
ax.plot(x,[2,1,3])

def trunc_ms_fmt(x, pos=None):
    return myFmt(x,pos)[:-5]

ax.xaxis.set_major_locator(seconds)
ax.xaxis.set_major_formatter(FuncFormatter(trunc_ms_fmt))

plt.gcf().autofmt_xdate()
plt.show()

enter image description here

Обратите внимание, чтоэтот формат довольно необычный;поэтому убедитесь, что читатель сюжета это понимает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...