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
浙公网安备 33010602011771号