Вам необходимо преобразовать столбец времени в тип datetime, используя функцию to_datetime()
из pandas
, иначе кажется, что bokeh не может правильно интерпретировать время.
Я думаю, что формат по оси X идет в мс, потому что у вас недостаточно длинных временных рамок в данных, чтобы форматирование имело какой-либо эффект, эти два значения находятся на расстоянии одной секунды, чтовероятно, соответствует тому, как ось даты и времени работает в боке.Например, если у вас есть данные большого диапазона (например, неделя), и вы увеличиваете масштаб графика, разрешение времени изменяется и становится более точным при увеличении. Если вы добавляете больше различий между значениями, форматирование делаетработа.
Кроме того, если вы хотите, чтобы время отображалось в формате: 22-Sep-18 02:22:22
, вам необходимо установить форматирование тиков следующим образом:
p.xaxis.formatter = DatetimeTickFormatter(days="%d-%b-%Y", hours="%H:%M", seconds="%S" )
Полный код:
from bokeh.plotting import figure, show, output_file
from bokeh.models.formatters import DatetimeTickFormatter
import pandas as pd
import time as time_
from datetime import datetime
def currentTime():
return int(round(time_.time()))
data = {'size': [1,2],'time':[currentTime(), currentTime() + 24 * 3600]}
df = pd.DataFrame(data=data)
df['time'] = pd.to_datetime(df['time'], unit='s')
p = figure(title = "TEST",x_axis_type='datetime')
p.xaxis.axis_label = 'time'
p.xaxis.formatter = DatetimeTickFormatter(days="%d-%b-%Y %H:%M:%S")
p.scatter(df["time"],df["size"],fill_color="olive",size=10)
output_file("test.html", title="test chart")
show(p)