Skip to main content
v2.2

Time series data

Displaying dates and timestamps​

LightningChart Python data values are described with numbers. When it comes to Time series data, timestamps must be in Unix time format, specifically milliseconds since January 1, 1970 00:00:00 UTC.

import time

current_time = time.time() # as seconds
current_time_ms = current_time * 1000 # as milliseconds
from datetime import datetime

def timestamp_str_to_unix(timestamp_str: str, timestamp_format: str):
""" Converts a timestamp string to a Unix timestamp in milliseconds.

Args:
timestamp_str (str): The timestamp string that needs to be converted.
timestamp_format (str): The format in which the timestamp string is provided.
"""
dt = datetime.strptime(timestamp_str, timestamp_format)
unix_ms = dt.timestamp() * 1000
return int(unix_ms)

unix_timestamp = timestamp_str_to_unix("2023-09-06 12:30:45", "%Y-%m-%d %H:%M:%S")
unix_timestamp # 1693992645000

To display date & time values on the axis, change axis tick strategy to DateTime or Time:

axis.set_tick_strategy('DateTime')

Time series example with real-time data:

import lightningchart as lc
import time
import random

lc.set_license('my-license-key')

chart = lc.ChartXY()

chart.get_default_x_axis().dispose() # dispose the default x-axis
axis = chart.add_x_axis(axis_type='linear-highPrecision') # create new x-axis
axis.set_tick_strategy('DateTime') # configure the axis to show datetime formatted ticks,
axis.set_scroll_strategy(strategy='scrolling') # set the axis to scroll strategy
axis.set_interval( # configure the axis interval length, in milliseconds
start=-10_000, # 10 seconds
end=0,
stop_axis_after=False # allow the axis move as new data comes in
)

series = chart.add_line_series(
schema={
'x': {'pattern': 'progressive'},
'y': {'pattern': None},
})

chart.open(live=True)

for _ in range(1000):
x = time.time() * 1000
y = random.random()
series.append_samples(samples={
'x': [x],
'y': [y]
})
time.sleep(0.01)

chart.close()