LVGL-图表

lv_chart_create

用于创建图表控件

lv_obj_t * lv_chart_create(lv_obj_t * par, const lv_obj_t * copy);
//par:指向父对象的指针
//copy:指向另一个图表控件的指针,如果非 NULL,则新创建的图表控件将复制该对象的属性
//ret:返回指向新创建的图表控件的指针

lv_chart_set_type

用于设置图表类型

void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type);
//chart:指向图表控件的指针
//type:新的图表类型,取值来自 lv_chart_type_t 枚举
/*
LV_CHART_TYPE_NONE:不显示任何数据,可用于隐藏数据系列。
LV_CHART_TYPE_LINE:用线条连接数据点。
LV_CHART_TYPE_COLUMN:以柱状图形式显示数据。
LV_CHART_TYPE_POINT:仅显示数据点。
LV_CHART_TYPE_AREA:填充线条下方的区域。
LV_CHART_TYPE_VERTICAL_LINE:仅绘制垂直线连接数据点,适用于图表宽度等于数据点数量的场景
*/

lv_chart_set_point_count

用于设置图表控件(lv_chart)中每个数据系列的点数的函数

void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_count);
//chart:指向图表控件的指针
//point_count:每个数据系列的最大数据点数量

lv_chart_set_range

用于设置图表控件(lv_chart)的 Y 轴范围,以指定图表的 Y 轴的最大值和最小值,从而控制图表的显示范围

void lv_chart_set_range(lv_obj_t * chart, lv_chart_axis_t axis, int32_t min, int32_t max);
//chart:指向图表控件的指针
//axis:指定要设置范围的轴,取值来自 lv_chart_axis_t 枚举:
//LV_CHART_AXIS_PRIMARY_Y:主 Y 轴(通常用于左侧 Y 轴)。
//LV_CHART_AXIS_SECONDARY_Y:次 Y 轴(通常用于右侧 Y 轴)
//min:Y 轴的最小值
//max:Y 轴的最大值

lv_chart_set_update_mode

用于设置图表控件(lv_chart)的更新模式

void lv_chart_set_update_mode(lv_obj_t * chart, lv_chart_update_mode_t mode);
//chart:指向图表控件的指针
//mode:更新模式,取值来自 lv_chart_update_mode_t 枚举
/*
LV_CHART_UPDATE_MODE_SHIFT:当添加新数据点时,旧的数据点会向左移动,新数据点会显示在最右侧。如果数据点数量超过 point_count,旧数据点会被丢弃。
LV_CHART_UPDATE_MODE_CIRCULAR:当添加新数据点时,旧的数据点会被新数据点覆盖,形成循环更新。数据点数量始终保持为 point_count。
LV_CHART_UPDATE_MODE_NONE:添加新数据点时,不会自动滚动或覆盖旧数据点。新数据点会被添加到现有数据点之后,可能会导致图表显示超出范围。
*/

lv_chart_set_div_line_count

用于设置图表控件(lv_chart)的分隔线数量的函数,.可以指定图表中 X 轴和 Y 轴的分隔线数量,从而控制图表的网格显示

void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hor, uint8_t ver);
//chart:指向图表控件的指针
//hor:水平方向(Y 轴)的分隔线数量
//ver:垂直方向(X 轴)的分隔线数量

lv_chart_set_zoom_x

用于设置图表控件(lv_chart)的 X 轴缩放比例

void lv_chart_set_zoom_x(lv_obj_t * chart, uint32_t zoom);
//chart:指向图表控件的指针
//zoom:X 轴的缩放比例。值越大,图表在水平方向上显示得越“拉伸”;值越小,图表在水平方向上显示得越“压缩”。

lv_chart_set_zoom_y

用于设置图表控件(lv_chart)的 Y 轴缩放比例

void lv_chart_set_zoom_y(lv_obj_t * chart, uint32_t zoom);
//chart:指向图表控件的指针
//zoom:Y 轴的缩放比例。值越大,图表在垂直方向上显示得越“拉伸”;值越小,图表在垂直方向上显示得越“压缩”

lv_chart_get_zoom_x

用于获取图表控件(lv_chart)当前 X 轴缩放比例的函数

uint32_t lv_chart_get_zoom_x(const lv_obj_t * chart);
//chart:指向图表控件的指针
//ret:返回当前图表的 X 轴缩放比例。返回值的范围通常在 1 到 65535 之间,值越大表示缩放程度越大

lv_chart_get_zoom_y

用于获取图表控件(lv_chart)当前 Y 轴缩放比例

uint32_t lv_chart_get_zoom_y(const lv_obj_t * chart);
//chart:指向图表控件的指针
//ret:返回当前图表的 Y 轴缩放比例。返回值的范围通常在 1 到 65535 之间,值越大表示缩放程度越大。

lv_chart_set_axis_tick

用于设置图表控件(lv_chart)坐标轴刻度显示选项

void lv_chart_set_axis_tick(lv_obj_t * obj, lv_chart_axis_t axis, lv_coord_t major_len, lv_coord_t minor_len, lv_coord_t major_cnt, lv_coord_t minor_cnt, bool label_en, lv_coord_t draw_size);
/*
obj:指向图表控件的指针。
axis:指定要设置的轴,取值来自 lv_chart_axis_t 枚举,例如 LV_CHART_AXIS_PRIMARY_Y(主 Y 轴)或 LV_CHART_AXIS_PRIMARY_X(主 X 轴)。
major_len:主刻度线的长度。
minor_len:次刻度线的长度。
major_cnt:主刻度线的数量。
minor_cnt:次刻度线的数量。
label_en:是否启用标签显示。如果为 true,则会显示刻度标签。
draw_size:用于显示刻度和标签的大小,单位为像素
*/

lv_chart_get_type

用于获取图表控件(lv_chart)当前类型的函数

lv_chart_type_t lv_chart_get_type(const lv_obj_t * chart);
//chart:指向图表控件的指针
//ret:返回当前图表的类型,取值来自 lv_chart_type_t 枚举
/*
LV_CHART_TYPE_NONE:不显示任何数据。
LV_CHART_TYPE_LINE:用线条连接数据点。
LV_CHART_TYPE_COLUMN:以柱状图形式显示数据。
LV_CHART_TYPE_POINT:仅显示数据点。
LV_CHART_TYPE_AREA:填充线条下方的区域。
LV_CHART_TYPE_VERTICAL_LINE:仅绘制垂直线连接数据点
*/

lv_chart_get_point_count

用于获取图表控件(lv_chart)中每个数据系列的最大数据点数量的函数,可以查询当前图表中每个数据系列可以容纳的最大数据点数量

uint16_t lv_chart_get_point_count(const lv_obj_t * chart);
//chart:指向图表控件的指针
//ret:返回当前图表中每个数据系列的最大数据点数量

lv_chart_get_x_start_point

用于获取指定数据系列的当前绘图起始索引

uint32_t lv_chart_get_x_start_point(const lv_obj_t * chart, lv_chart_series_t * ser);
//chart:指向图表控件的指针
//ser:指向数据系列的指针
//ret:返回指定数据系列的当前绘图起始索引

lv_chart_get_point_pos_by_id

用于获取图表中特定数据点的屏幕坐标位置。

bool lv_chart_get_point_pos_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_point_t * p_out);
//obj: 指向图表对象的指针
//ser: 指向图表数据系列的指针
//id: 要获取位置的数据点索引
//p_out: 用于存储获取到的坐标位置的 lv_point_t 结构体指针
//ret:true: 如果成功获取到数据点的位置,false: 如果获取失败(例如索引超出范围)
//notice:数据点索引是从0开始的,第一个数据点的索引是0

lv_chart_refresh

用于强制刷新图表对象,使其重新绘制。

void lv_chart_refresh(lv_obj_t * obj);
//obj: 指向要刷新的图表对象的指针
/*
此函数会强制图表对象重新计算和绘制其内容。通常在以下情况下使用:
直接修改了图表数据系列中的数据点值(而不是通过 LVGL 提供的 API)
需要立即更新图表显示而不等待下一个刷新周期
在修改了影响图表显示的样式或属性后
*/

lv_chart_add_series

用于向图表对象添加新的数据系列

lv_chart_series_t * lv_chart_add_series(lv_obj_t * obj, lv_color_t color, lv_chart_axis_t axis);
//obj: 指向图表对象的指针
//color: 数据系列的颜色
//axis: 数据系列使用的坐标轴(LV_CHART_AXIS_PRIMARY_Y 或 LV_CHART_AXIS_SECONDARY_Y)
//ret:成功时返回指向新创建的数据系列的指针,失败时返回 NULL

lv_chart_remove_series

用于从图表对象中移除指定的数据系列

void lv_chart_remove_series(lv_obj_t * obj, lv_chart_series_t * series);
//obj: 指向图表对象的指针
//series: 指向要移除的数据系列的指针

lv_chart_hide_series

用于控制图表数据系列可见性的函数,它可以将指定的数据系列隐藏而不实际删除它

void lv_chart_hide_series(lv_obj_t * chart, lv_chart_series_t * series, bool hide);
//chart:指向图表对象的指针
//series:要隐藏/显示的数据系列指针
//hide:true-隐藏系列,false-显示系列

lv_chart_set_series_color

用于动态修改图表数据系列颜色的函数

void lv_chart_set_series_color(lv_obj_t * chart, lv_chart_series_t * series, lv_color_t color);
//chart:指向图表对象的指针
//series:要修改颜色的数据系列指针
//color:新的颜色值

lv_chart_set_x_start_point

用于控制图表数据系列显示起始点的函数,适用于实现滚动或环形缓冲区效果的图表

void lv_chart_set_x_start_point(lv_obj_t * chart, lv_chart_series_t * series, uint16_t id);
//chart:图表对象指针
//series:要设置的数据系列指针
//id:新的起始点索引 (0到点总数-1)

lv_chart_get_series_next

用于遍历图表数据系列的实用函数,它可以获取指定系列的下一个系列指针。

lv_chart_series_t * lv_chart_get_series_next(const lv_obj_t * chart, const lv_chart_series_t * series);
//chart:图表对象指针
//series:当前系列指针(传入NULL获取第一个系列)
//ret:返回下一个数据系列的指针,如果没有更多系列,返回NULL

lv_chart_add_cursor

在图表上添加光标/指示器的函数,它可以创建可自定义的垂直或水平参考线

lv_chart_cursor_t * lv_chart_add_cursor(lv_obj_t * obj, lv_color_t color, lv_dir_t dir);
//obj:指向图表对象的指针
//color:光标的颜色
//dir:光标方向 (LV_DIR_LEFT/RIGHT/TOP/BOTTOM/HOR/VER)
//ret:成功时返回指向新创建的光标对象的指针,失败时返回 NULL

lv_chart_set_cursor_pos

用于设置图表光标位置的函数,它可以精确定位光标在图表中的显示位置

void lv_chart_set_cursor_pos(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_coord_t pos_x, lv_coord_t pos_y);
//chart:图表对象指针
//cursor:要设置的光标指针
//pos_x:X轴相对位置(0-255或LV_PCT)
//pos_y:Y轴相对位置(0-255或LV_PCT)

lv_chart_set_cursor_point

用于将图表光标与特定数据点关联的函数,它可以将光标精确定位到某个数据系列的具体数据点上。

void lv_chart_set_cursor_point(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_chart_series_t * series, uint16_t point_id);
//chart:图表对象指针
//cursor:要设置的光标指针
//series:关联的数据系列指针
//point_id:数据点索引(从0开始)

lv_chart_get_cursor_point

用于获取图表光标当前关联的数据点信息的函数

lv_coord_t lv_chart_get_cursor_point(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_point_t * p_out);
//chart:图表对象指针
//cursor:要查询的光标指针
//p_out:输出参数,存储数据点的坐标(可为NULL)
//ret:返回关联数据点的Y值(如果光标未关联数据点,返回LV_COORD_MIN),同时通过p_out参数返回数据点的屏幕坐标

lv_chart_set_all_value

用于批量设置图表数据系列所有数据点值的函数

void lv_chart_set_all_value(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t value);
//obj:图表对象指针
//ser:要设置的数据系列指针
//value:要设置的值

lv_chart_set_next_value

用于向图表数据系列添加新数据点的函数,支持实时数据流的动态更新。

void lv_chart_set_next_value(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t value);
//obj:图表对象指针
//ser:目标数据系列指针
//value:要添加的新值

lv_chart_set_next_value2

用于向图表数据系列同时添加 X 和 Y 值的增强型函数,支持二维数据点的动态更新

void lv_chart_set_next_value2(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t x_value, lv_coord_t y_value);
//obj:图表对象指针
//ser:目标数据系列指针
//x_value:X轴坐标值
//y_value:Y轴坐标值

lv_chart_set_value_by_id

用于直接设置图表数据系列中特定索引位置数据点值的函数

void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_coord_t value);
//obj:	图表对象指针
//ser:目标数据系列指针
//id:数据点索引(从0开始)
//value:要设置的值

lv_chart_set_value_by_id2

用于设置散点图(SCATTER)类型图表中特定数据点的 X 和 Y 坐标值的函数

void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_coord_t x_value, lv_coord_t y_value);
//obj:图表对象指针
//ser:目标数据系列指针
//id:数据点索引(从0开始)
//x_value:X轴坐标值
//y_value:Y轴坐标值

lv_chart_set_ext_y_array

用于将图表数据系列关联到外部 Y 值数组的函数,允许直接使用外部数据而无需复制

void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t array[]);
//obj:图表对象指针
//ser:目标数据系列指针
//array:外部 Y 值数组指针

lv_chart_set_ext_x_array

用于将图表数据系列关联到外部 X 值数组的函数,主要用于散点图(SCATTER)类型

void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t array[]);
//obj:图表对象指针
//ser:目标数据系列指针
//array:外部 X 值数组指针

lv_chart_get_y_array

用于获取图表数据系列的 Y 值数组指针的函数

lv_coord_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser);
//obj:图表对象指针
//ser:目标数据系列指针
//ret:返回指向系列 Y 值数组的指针,如果系列无效返回 NULL

lv_chart_get_x_array

用于获取散点图数据系列的 X 值数组指针的函数

lv_coord_t * lv_chart_get_x_array(const lv_obj_t * obj, lv_chart_series_t * ser);
//obj:图表对象指针
//ser:目标数据系列指针
//ret:返回指向系列 X值数组的指针,如果系列无效返回 NULL

lv_chart_get_pressed_point

用于获取用户在图表上按下或触摸位置对应数据点信息的函数

uint16_t lv_chart_get_pressed_point(const lv_obj_t * obj);
//obj:图表对象指针
//ret:返回被按下的数据点索引(从0开始),如果没有点被按下或图表未被按下,返回LV_CHART_POINT_NONE
posted @ 2025-06-23 21:20  LRadian  阅读(206)  评论(0)    收藏  举报