LinePlot
Introduction
LinePlot
widget in Supervisely is a widget that allows users to display one or more lines of data in a plot. It provides a canvas area that can be customized with various options, such as line smoothing, axis labels, and displaying legends. LinePlot
widget is useful for visualizing time-series data or data with continuous variables.
Function signature
x1 = list(range(10))
y1 = [random.randint(10, 148) for _ in range(10)]
x2 = list(range(30))
y2 = [random.randint(1, 300) for _ in range(30)]
line_plot = LinePlot("My Line Plot")
line_plot.add_series("Line 1", x1, y1)
line_plot.add_series("Line 2", x2, y2)
or
size1 = 10
x1 = list(range(size1))
y1 = np.random.randint(low=10, high=148, size=size1).tolist()
s1 = [{"x": x, "y": y} for x, y in zip(x1, y1)]
size2 = 30
x2 = list(range(size2))
y2 = np.random.randint(low=0, high=300, size=size2).tolist()
s2 = [{"x": x, "y": y} for x, y in zip(x2, y2)]
line_plot = LinePlot(
title="My Line Plot",
series=[{"name": "Line 1", "data": s1}, {"name": "Line 2", "data": s2}],
smoothing_weight=0,
group_key=None,
show_legend=True,
decimals_in_float=2,
xaxis_decimals_in_float=None,
yaxis_interval=None,
widget_id=None,
yaxis_autorescale=True,
)

Parameters
title
str
LinePlot
title
series
list
List of input data series
smoothing_weight
int
Smoothing
group_key
str
Synced charts key
show_legend
bool
Show legend on LinePlot
decimals_in_float
int
The number of fractions to display floating values in Y
axis
xaxis_decimals_in_float
int
The number of fractions to display floating values in X
axis
yaxis_interval
list
Min and max values on Y
axis (e.g. [0, 1])
yaxis_autorescale
bool
Set autoscaling of the Y
axis
widget_id
str
ID of the widget
title
Determine LinePlot
title.
type: str
line_chart = LinePlot(title="Max vs Denis")

series
Determine list of input data series.
type: list
default value: []
size1 = 10
x1 = list(range(size1))
y1 = np.random.randint(low=10, high=148, size=size1).tolist()
s1 = [{"x": x, "y": y} for x, y in zip(x1, y1)]
size2 = 30
x2 = list(range(size2))
y2 = np.random.randint(low=0, high=300, size=size2).tolist()
s2 = [{"x": x, "y": y} for x, y in zip(x2, y2)]
line_chart = LinePlot(
title="Max vs Denis",
series=[{"name": "Max", "data": s1}, {"name": "Denis", "data": s2}],
)

smoothing_weight
Determine LinePlot
smoothing.
type: int
default value: 0
group_key
Synced LinePlot
key.
type: str
default value: None
show_legend
Determine showing legend on LinePlot
.
type: bool
default value: True
line_chart = LinePlot(
title="Max vs Denis",
series=[{"name": "Max", "data": s1}, {"name": "Denis", "data": s2}],
show_legend=False,
)

decimals_in_float
The number of fractions to display floating values in Y
axis.
type: int
default value: 2
xaxis_decimals_in_float
The number of fractions to display floating values in X
axis.
type: int
default value: None
line_chart = LinePlot(
title="Max vs Denis",
series=[{"name": "Max", "data": s1}, {"name": "Denis", "data": s2}],
xaxis_decimals_in_float=44,
)

yaxis_interval
Determine min and max values on Y
axis (e.g. [0, 1]).
type: list
default value: None
line_chart = LinePlot(
title="Max vs Denis",
series=[{"name": "Max", "data": s1}, {"name": "Denis", "data": s2}],
yaxis_interval=[0, 200],
)

yaxis_autorescale
Set autoscaling of the Y
axis.
type: bool
default value: True
widget_id
ID of the widget.
type: str
default value: None
Methods and attributes
update_y_range(ymin: int, ymax: int)
Update LinePlot
data.
add_series(name: str, x: list, y: list, send_changes: bool = True)
Add new series of data in LinePlot
.
add_series_batch(series: list)
Add new series of data in LinePlot
by batch.
add_to_series(name_or_id: str or int, data: List[tuple] or List[dict] or tuple or dict)
Add data to existing series.
get_series_by_name(name: str)
Return series data by name.
Mini App Example
You can find this example in our GitHub repository:
ui-widgets-demos/charts and plots/005_line_plot/src/main.py
Import libraries
import os
import numpy as np
import supervisely as sly
from supervisely.app.widgets import Card, Container, LinePlot
from dotenv import load_dotenv
Init API client
First, we load environment variables with credentials and init API for communicating with Supervisely Instance:
load_dotenv("local.env")
load_dotenv(os.path.expanduser("~/supervisely.env"))
api = sly.Api()
Prepare series for plot
size1 = 10
x1 = list(range(size1))
y1 = np.random.randint(low=10, high=148, size=size1).tolist()
s1 = [{"x": x, "y": y} for x, y in zip(x1, y1)]
size2 = 30
x2 = list(range(size2))
y2 = np.random.randint(low=0, high=300, size=size2).tolist()
s2 = [{"x": x, "y": y} for x, y in zip(x2, y2)]
Initialize LinePlot
widget
LinePlot
widgetline_chart = LinePlot(
title="Max vs Denis",
series=[{"name": "Max", "data": s1}, {"name": "Denis", "data": s2}],
show_legend=False,
)
Create app layout
Prepare a layout for app using Card
widget with the content
parameter and place widget that we've just created in the Container
widget.
card = Card(
title="Line Plot",
content=line_chart,
)
layout = Container(widgets=[card])
Create app using layout
Create an app object with layout parameter.
app = sly.Application(layout=layout)

Last updated
Was this helpful?