Skip to main content

XY Chart

Chart type for visualizing data between two dimensions, X and Y. It has built-in Axis functionality, and supports a large set of series types.

XY ChartXY Chart
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Chart XY'
)

point_series = chart.add_point_series()
point_series.set_point_color(lc.Color(0, 255, 255, 128))
lines_amount = 3
for i in range(lines_amount):
line_series = chart.add_line_series()
y = 0
for x in range(1000):
y += (random.random() * 2) - 1
line_series.add(x=x, y=y)
if random.random() > 0.75:
point_series.add(x=x, y=y + random.uniform(-10, 10))

chart.open()

Series types

Line Series

Line SeriesLine Series
import lightningchart as lc
import random

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

x_values = list(range(0, 100))
y_values = []
y = 0
for i in range(100):
y += random.random() * 2 - 1
y_values.append(y)

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Line Series'
)

series = chart.add_line_series().append_samples(
x_values=x_values,
y_values=y_values
)
series.set_line_thickness(10)
chart.open()

Point Series

Point SeriesPoint Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Point Series'
)
series = chart.add_point_series(
sizes=True,
rotations=True,
lookup_values=True,
)

x_values = []
y_values = []
lookup_values = []
rotations = []
sizes = []

y = 0
for x in range(250):
y = y + (random.random() * 2) - 1
x_values.append(x)
y_values.append(y)
sizes.append(random.randint(10, 50))
rotations.append(random.randint(0, 360))
lookup_values.append(random.uniform(0, 1))

series.append_samples(
x_values=x_values,
y_values=y_values,
sizes=sizes,
lookup_values=lookup_values
)

series.set_individual_point_color_enabled()
series.set_palette_colors(
steps=[
{'value': 0.0, 'color': lc.Color(255, 0, 0, 128)},
{'value': 1.0, 'color': lc.Color(0, 255, 255, 128)},
],
look_up_property='value',
percentage_values=True
)

chart.open()

Point Line Series

Point Line SeriesPoint Line Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Point Line Series'
)

series_list = [
chart.add_point_line_series().set_point_shape('circle'),
chart.add_point_line_series().set_point_shape('triangle'),
chart.add_point_line_series().set_point_shape('square')
]

n = 25
x_values = list(range(0, n))

for series in series_list:
series.set_point_size(10)
series.set_point_color(lc.Color(0, 0, 0))
series.set_line_thickness(2)

y_values = []
y = 0
for i in range(n):
y += (random.random() * 2) - 1
y_values.append(y)
series.add(x=x_values, y=y_values)

chart.open()

Spline Series

Spline SeriesSpline Series
import lightningchart as lc

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Spline Series'
)

n = 10
x = list(range(10))
y1, y2 = [], []

for i in range(10):
if i % 2 == 0:
y1.append(i - 1)
y2.append(i + 1)
else:
y1.append(i + 1)
y2.append(i - 1)

series1 = chart.add_spline_series().set_line_thickness(10).add(x=x, y=y1)
series2 = chart.add_spline_series().set_line_thickness(10).add(x=x, y=y2)

chart.open()

Step Series

Step SeriesStep Series
import lightningchart as lc

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Step Series'
)

n = 10
x = list(range(n))
y1, y2 = [], []

for i in range(1, n + 1):
if i % 2 == 0:
y1.append(i - 1)
y2.append(i + 1)
else:
y1.append(i + 1)
y2.append(i - 1)

series1 = chart.add_step_series(step_mode='after')
series1.set_line_thickness(5)
series1.add(x=x, y=y1)

series2 = chart.add_step_series(step_mode='middle')
series2.set_line_thickness(5)
series2.add(x=x, y=y2)

chart.open()

Area Series

Area SeriesArea Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Area Series'
)

series_amount = 2
x_values = list(range(0, 100))
y_values = []
y = 0
for i in range(series_amount):
y_values.append([])
for j in range(100):
y += (random.random() * 2) - 1
y_values[i].append(y)

for i in range(series_amount):
series = chart.add_area_series()
series.add(x_values, y_values[i])

chart.open()

Area Range Series

Area Range SeriesArea Range Series
import lightningchart as lc

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

data = [
{'position': 0, 'low': 0, 'high': 1},
{'position': 1, 'low': 1, 'high': 2},
{'position': 2, 'low': 3, 'high': 4},
{'position': 3, 'low': 2, 'high': 3},
{'position': 4, 'low': 4, 'high': 2},
{'position': 5, 'low': 6, 'high': 5},
{'position': 6, 'low': 4, 'high': 3},
{'position': 7, 'low': 5, 'high': 4},
{'position': 8, 'low': 3, 'high': 4},
{'position': 9, 'low': 4, 'high': 5},
]

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Area Range Series'
)
series = chart.add_area_range_series().add_dict_data(data)
chart.open()

Positive Area Series

Positive Area SeriesPositive Area Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Positive Area Series'
)

x = list(range(0, 50))
y = [random.uniform(0, 1) for _ in range(50)]

series = chart.add_positive_area_series().add(x, y)
chart.open()

Negative Area Series

Negative Area SeriesNegative Area Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Negative Area Series'
)

x = list(range(0, 50))
y = [random.uniform(-1, 0) for _ in range(50)]

series = chart.add_negative_area_series().add(x, y)
chart.open()

Bipolar Area Series

Bipolar Area SeriesBipolar Area Series
import lightningchart as lc
import random

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Bipolar Area Series'
)

x = list(range(0, 50))
y = [random.uniform(-1, 1) for _ in range(50)]

series = chart.add_bipolar_area_series().add(x, y)
chart.open()

Box Series

Box SeriesBox Series
import lightningchart as lc

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

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Box Series'
)

data = [
{
'start': 1,
'end': 2,
'median': 3,
'lowerQuartile': 2,
'upperQuartile': 4,
'lowerExtreme': 1,
'upperExtreme': 5
},
{
'start': 3,
'end': 4,
'median': 2.5,
'lowerQuartile': 1.24,
'upperQuartile': 4.74,
'lowerExtreme': 0.31,
'upperExtreme': 5.18
},
{
'start': 5,
'end': 6,
'median': 4.1,
'lowerQuartile': 3.5,
'upperQuartile': 5.75,
'lowerExtreme': 2.22,
'upperExtreme': 6.98
},
{
'start': 7,
'end': 8,
'median': 5.21,
'lowerQuartile': 2.5,
'upperQuartile': 5.9,
'lowerExtreme': 1.2,
'upperExtreme': 6.8
},
]

series = chart.add_box_series()
series.add_multiple(data)
chart.open()

Heatmap Grid Series

Heatmap Grid SeriesHeatmap Grid Series
import lightningchart as lc
import random

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

rows_amount = 25
columns_amount = 25

heatmap_data = []
for i in range(rows_amount):
row = []
for j in range(columns_amount):
row.append(random.random())
heatmap_data.append(row)

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Heatmap Grid Series'
)
series = chart.add_heatmap_grid_series(
columns=columns_amount,
rows=rows_amount
)
series.set_intensity_interpolation(False)
series.invalidate_intensity_values(heatmap_data)
series.set_palette_colors(
steps=[
{'value': 0.0, 'color': lc.Color(0, 0, 0)},
{'value': 1.0, 'color': lc.Color(0, 255, 255)},
],
look_up_property='value',
percentage_values=True
)
chart.add_legend(data=series)
chart.open()

Heatmap Scrolling Grid Series

Heatmap Scrolling Grid SeriesHeatmap Scrolling Grid Series
import lightningchart as lc
import random
import time

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

resolution = 250

heatmap_data = []
for i in range(resolution):
row = []
for j in range(resolution):
row.append(random.random())
heatmap_data.append(row)

chart = lc.ChartXY(
theme=lc.Themes.White,
title='Heatmap Scrolling Grid Series'
)

x_axis = chart.get_default_x_axis()
x_axis.set_scroll_strategy(strategy='progressive')
x_axis.set_interval(start=-resolution, end=0)

series = chart.add_heatmap_scrolling_grid_series(resolution=resolution)
series.add_intensity_values(heatmap_data)
series.set_palette_colors(
steps=[
{'value': 0.0, 'color': lc.Color(0, 0, 0)},
{'value': 1.0, 'color': lc.Color(0, 255, 255)},
],
look_up_property='value',
percentage_values=True
)
series.hide_wireframe()
chart.add_legend(data=series)
chart.set_animations_enabled(False)

chart.open(live=True)

for i in range(500):
new_data = [[random.random() for _ in range(resolution)]]
series.add_intensity_values(new_data)
time.sleep(0.01)

chart.close()