lv_chart.h

Defines

LV_CHART_POINT_NONE

Default value of points. Can be used to not draw a point

Typedefs

typedef _lv_chart_type_t lv_chart_type_t
typedef _lv_chart_update_mode_t lv_chart_update_mode_t
typedef _lv_chart_axis_t lv_chart_axis_t

Enums

enum _lv_chart_type_t

Chart types

Values:

enumerator LV_CHART_TYPE_NONE

Don't draw the series

enumerator LV_CHART_TYPE_LINE

Connect the points with lines

enumerator LV_CHART_TYPE_BAR

Draw columns

enumerator LV_CHART_TYPE_SCATTER

Draw points and lines in 2D (x,y coordinates)

enum _lv_chart_update_mode_t

Chart update mode for lv_chart_set_next

Values:

enumerator LV_CHART_UPDATE_MODE_SHIFT

Shift old data to the left and add the new one the right

enumerator LV_CHART_UPDATE_MODE_CIRCULAR

Add the new data in a circular way

enum _lv_chart_axis_t

Enumeration of the axis'

Values:

enumerator LV_CHART_AXIS_PRIMARY_Y
enumerator LV_CHART_AXIS_SECONDARY_Y
enumerator LV_CHART_AXIS_PRIMARY_X
enumerator LV_CHART_AXIS_SECONDARY_X
enumerator _LV_CHART_AXIS_LAST

Functions

lv_obj_t *lv_chart_create(lv_obj_t *parent)

Create a chart object

Parameters:

parent -- pointer to an object, it will be the parent of the new chart

Returns:

pointer to the created chart

void lv_chart_set_type(lv_obj_t *obj, lv_chart_type_t type)

Set a new type for a chart

Parameters:
  • obj -- pointer to a chart object

  • type -- new type of the chart (from 'lv_chart_type_t' enum)

void lv_chart_set_point_count(lv_obj_t *obj, uint32_t cnt)

Set the number of points on a data line on a chart

Parameters:
  • obj -- pointer to a chart object

  • cnt -- new number of points on the data lines

void lv_chart_set_range(lv_obj_t *obj, lv_chart_axis_t axis, int32_t min, int32_t max)

Set the minimal and maximal y values on an axis

Parameters:
  • obj -- pointer to a chart object

  • axis -- LV_CHART_AXIS_PRIMARY_Y or LV_CHART_AXIS_SECONDARY_Y

  • min -- minimum value of the y axis

  • max -- maximum value of the y axis

void lv_chart_set_update_mode(lv_obj_t *obj, lv_chart_update_mode_t update_mode)

Set update mode of the chart object. Affects

Parameters:
  • obj -- pointer to a chart object

  • update_mode -- the update mode

void lv_chart_set_div_line_count(lv_obj_t *obj, uint8_t hdiv, uint8_t vdiv)

Set the number of horizontal and vertical division lines

Parameters:
  • obj -- pointer to a chart object

  • hdiv -- number of horizontal division lines

  • vdiv -- number of vertical division lines

lv_chart_type_t lv_chart_get_type(const lv_obj_t *obj)

Get the type of a chart

Parameters:

obj -- pointer to chart object

Returns:

type of the chart (from 'lv_chart_t' enum)

uint32_t lv_chart_get_point_count(const lv_obj_t *obj)

Get the data point number per data line on chart

Parameters:

obj -- pointer to chart object

Returns:

point number on each data line

uint32_t lv_chart_get_x_start_point(const lv_obj_t *obj, lv_chart_series_t *ser)

Get the current index of the x-axis start point in the data array

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

Returns:

the index of the current x start point in the data array

void lv_chart_get_point_pos_by_id(lv_obj_t *obj, lv_chart_series_t *ser, uint32_t id, lv_point_t *p_out)

Get the position of a point to the chart.

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to series

  • id -- the index.

  • p_out -- store the result position here

void lv_chart_refresh(lv_obj_t *obj)

Refresh a chart if its data line has changed

Parameters:

obj -- pointer to chart object

lv_chart_series_t *lv_chart_add_series(lv_obj_t *obj, lv_color_t color, lv_chart_axis_t axis)

Allocate and add a data series to the chart

Parameters:
  • obj -- pointer to a chart object

  • color -- color of the data series

  • axis -- the y axis to which the series should be attached (::LV_CHART_AXIS_PRIMARY_Y or ::LV_CHART_AXIS_SECONDARY_Y)

Returns:

pointer to the allocated data series or NULL on failure

void lv_chart_remove_series(lv_obj_t *obj, lv_chart_series_t *series)

Deallocate and remove a data series from a chart

Parameters:
  • obj -- pointer to a chart object

  • series -- pointer to a data series on 'chart'

void lv_chart_hide_series(lv_obj_t *chart, lv_chart_series_t *series, bool hide)

Hide/Unhide a single series of a chart.

Parameters:
  • chart -- pointer to a chart object.

  • series -- pointer to a series object

  • hide -- true: hide the series

void lv_chart_set_series_color(lv_obj_t *chart, lv_chart_series_t *series, lv_color_t color)

Change the color of a series

Parameters:
  • chart -- pointer to a chart object.

  • series -- pointer to a series object

  • color -- the new color of the series

void lv_chart_set_x_start_point(lv_obj_t *obj, lv_chart_series_t *ser, uint32_t id)

Set the index of the x-axis start point in the data array. This point will be considers the first (left) point and the other points will be drawn after it.

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

  • id -- the index of the x point in the data array

lv_chart_series_t *lv_chart_get_series_next(const lv_obj_t *chart, const lv_chart_series_t *ser)

Get the next series.

Parameters:
  • chart -- pointer to a chart

  • ser -- the previous series or NULL to get the first

Returns:

the next series or NULL if there is no more.

lv_chart_cursor_t *lv_chart_add_cursor(lv_obj_t *obj, lv_color_t color, lv_dir_t dir)

Add a cursor with a given color

Parameters:
  • obj -- pointer to chart object

  • color -- color of the cursor

  • dir -- direction of the cursor. LV_DIR_RIGHT/LEFT/TOP/DOWN/HOR/VER/ALL. OR-ed values are possible

Returns:

pointer to the created cursor

void lv_chart_set_cursor_pos(lv_obj_t *chart, lv_chart_cursor_t *cursor, lv_point_t *pos)

Set the coordinate of the cursor with respect to the paddings

Parameters:
  • chart -- pointer to a chart object

  • cursor -- pointer to the cursor

  • pos -- the new coordinate of cursor relative to the chart

void lv_chart_set_cursor_point(lv_obj_t *chart, lv_chart_cursor_t *cursor, lv_chart_series_t *ser, uint32_t point_id)

Stick the cursor to a point

Parameters:
  • chart -- pointer to a chart object

  • cursor -- pointer to the cursor

  • ser -- pointer to a series

  • point_id -- the point's index or LV_CHART_POINT_NONE to not assign to any points.

lv_point_t lv_chart_get_cursor_point(lv_obj_t *chart, lv_chart_cursor_t *cursor)

Get the coordinate of the cursor with respect to the paddings

Parameters:
  • chart -- pointer to a chart object

  • cursor -- pointer to cursor

Returns:

coordinate of the cursor as lv_point_t

void lv_chart_set_all_value(lv_obj_t *obj, lv_chart_series_t *ser, int32_t value)

Initialize all data points of a series with a value

Parameters:
  • obj -- pointer to chart object

  • ser -- pointer to a data series on 'chart'

  • value -- the new value for all points. LV_CHART_POINT_NONE can be used to hide the points.

void lv_chart_set_next_value(lv_obj_t *obj, lv_chart_series_t *ser, int32_t value)

Set the next point's Y value according to the update mode policy.

Parameters:
  • obj -- pointer to chart object

  • ser -- pointer to a data series on 'chart'

  • value -- the new value of the next data

void lv_chart_set_next_value2(lv_obj_t *obj, lv_chart_series_t *ser, int32_t x_value, int32_t y_value)

Set the next point's X and Y value according to the update mode policy.

Parameters:
  • obj -- pointer to chart object

  • ser -- pointer to a data series on 'chart'

  • x_value -- the new X value of the next data

  • y_value -- the new Y value of the next data

void lv_chart_set_value_by_id(lv_obj_t *obj, lv_chart_series_t *ser, uint32_t id, int32_t value)

Set an individual point's y value of a chart's series directly based on its index

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

  • id -- the index of the x point in the array

  • value -- value to assign to array point

void lv_chart_set_value_by_id2(lv_obj_t *obj, lv_chart_series_t *ser, uint32_t id, int32_t x_value, int32_t y_value)

Set an individual point's x and y value of a chart's series directly based on its index Can be used only with LV_CHART_TYPE_SCATTER.

Parameters:
  • obj -- pointer to chart object

  • ser -- pointer to a data series on 'chart'

  • id -- the index of the x point in the array

  • x_value -- the new X value of the next data

  • y_value -- the new Y value of the next data

void lv_chart_set_ext_y_array(lv_obj_t *obj, lv_chart_series_t *ser, int32_t array[])

Set an external array for the y data points to use for the chart NOTE: It is the users responsibility to make sure the point_cnt matches the external array size.

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

  • array -- external array of points for chart

void lv_chart_set_ext_x_array(lv_obj_t *obj, lv_chart_series_t *ser, int32_t array[])

Set an external array for the x data points to use for the chart NOTE: It is the users responsibility to make sure the point_cnt matches the external array size.

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

  • array -- external array of points for chart

int32_t *lv_chart_get_y_array(const lv_obj_t *obj, lv_chart_series_t *ser)

Get the array of y values of a series

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

Returns:

the array of values with 'point_count' elements

int32_t *lv_chart_get_x_array(const lv_obj_t *obj, lv_chart_series_t *ser)

Get the array of x values of a series

Parameters:
  • obj -- pointer to a chart object

  • ser -- pointer to a data series on 'chart'

Returns:

the array of values with 'point_count' elements

uint32_t lv_chart_get_pressed_point(const lv_obj_t *obj)

Get the index of the currently pressed point. It's the same for every series.

Parameters:

obj -- pointer to a chart object

Returns:

the index of the point [0 .. point count] or LV_CHART_POINT_ID_NONE if no point is being pressed

int32_t lv_chart_get_first_point_center_offset(lv_obj_t *obj)

Get the overall offset from the chart's side to the center of the first point. In case of a bar chart it will be the center of the first column group

Parameters:

obj -- pointer to a chart object

Returns:

the offset of the center

Variables

const lv_obj_class_t lv_chart_class
struct lv_chart_series_t
#include <lv_chart.h>

Descriptor a chart series

Public Members

int32_t *x_points
int32_t *y_points
lv_color_t color
uint32_t start_point
uint32_t hidden
uint32_t x_ext_buf_assigned
uint32_t y_ext_buf_assigned
uint32_t x_axis_sec
uint32_t y_axis_sec
struct lv_chart_cursor_t

Public Members

lv_point_t pos
int32_t point_id
lv_color_t color
lv_chart_series_t *ser
lv_dir_t dir
uint32_t pos_set
struct lv_chart_t

Public Members

lv_obj_t obj
lv_ll_t series_ll

Linked list for the series (stores lv_chart_series_t)

lv_ll_t cursor_ll

Linked list for the cursors (stores lv_chart_cursor_t)

int32_t ymin[2]
int32_t ymax[2]
int32_t xmin[2]
int32_t xmax[2]
int32_t pressed_point_id
uint32_t hdiv_cnt

Number of horizontal division lines

uint32_t vdiv_cnt

Number of vertical division lines

uint32_t point_cnt

Point number in a data line

lv_chart_type_t type

Line or column chart

lv_chart_update_mode_t update_mode