You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LVGL图表仅显示整数,如何设置使其支持浮点数值显示?

LVGL图表显示浮点数值的解决方案

LVGL原生图表组件默认仅支持整数数值显示,直接通过lv_chart_set_axis_tick这类API无法设置浮点数刻度,因为相关参数均为整数类型。

你可以通过以下两种方式处理:

  • 数值缩放转换:这是最常用的方案。将浮点数放大N倍转为整数传入图表,再通过自定义刻度标签回调将数值缩小N倍,格式化为浮点数显示。比如要显示步长0.1,就把所有数值乘以10转成整数,回调时再除以10并格式化为一位小数。

    示例代码参考:

    // 定义缩放因子
    #define SCALE_FACTOR 10
    
    // 传入数据时将浮点数转整数
    float float_data = 3.2;
    lv_chart_set_next_value(chart, series, (int)(float_data * SCALE_FACTOR));
    
    // 自定义轴标签绘制回调
    static void custom_axis_label(lv_obj_t * axis, lv_coord_t value, lv_point_t * draw_pos) {
        char label_buf[16];
        // 将整数转回浮点数并格式化
        lv_snprintf(label_buf, sizeof(label_buf), "%.1f", (float)value / SCALE_FACTOR);
        lv_draw_label_dsc_t label_dsc;
        lv_draw_label_dsc_init(&label_dsc);
        lv_draw_label(axis, &label_dsc, draw_pos->x, draw_pos->y, label_buf, NULL);
    }
    
    // 设置轴刻度并绑定回调
    lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 10*SCALE_FACTOR, 5*SCALE_FACTOR, 5, 2, true, 50);
    lv_chart_set_axis_label_cb(chart, LV_CHART_AXIS_PRIMARY_Y, custom_axis_label);
    
  • 自定义绘制标签:如果不想做数值缩放,可在图表绘制完成后,手动计算刻度位置并绘制浮点标签。但这种方式需要自行处理坐标计算,相对繁琐,不如缩放方案高效。

综上,数值缩放+自定义标签回调是LVGL社区处理浮点数图表的主流方案,简单且高效。

内容的提问来源于stack exchange,提问作者halo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:45:03