Skip to content

NE 合集 16 · 图表(一):折线图与柱状图 ​

《LingBuilder new_emoji 合集》第 16 集。图表拆两集讲,本集是 LineChart 折线图(看趋势)和 BarChart 柱状图(看对比)。这两个组件的入门门槛不在好不好看,而在数据怎么喂和能不能运行期改——答案会让你意外。全程约 35 分钟。

前置要求:完成第 01 集;建议先看第 15 集(统计与进度),本集延续「展示件」这条线。本集源码包见文末。

这一集你将学会 ​

  • LineChart:points 一行一个数据点(标签 + 制表符 + 数值),showArea 面积填充、showTooltip 悬停提示、showAxis 坐标轴、chartStyle 样式
  • BarChart:bars 同样一行一条,orientation 控制水平/垂直,showValues 显示数值
  • 一个必须知道的引擎行为:垂直柱状图的数值只在鼠标悬停到某根柱子时才显示那一根,水平方向才每根都显示
  • 图表只有鼠标和焦点事件:鼠标按下 给你的是像素坐标,不是「第几个点/第几根柱子」

先看一眼本集成品——折线图与柱状图把数据画出来:

成品预览

1. 命令与事件预告 ​

命令 / 事件作用
鼠标按下 事件参数 整数型 横坐标, 整数型 纵坐标, 整数型 鼠标按钮,坐标相对控件内容区
(无数据事件)折线图/柱状图都没有「选中某点」事件,靠 鼠标移动 自己算
(无改数命令)两个图都没有运行期改数据的中文命令,数据只能在设计器里给

本集只需要 new_emoji 模块。

2. 新建项目 + 启用模块 + 切后端 ​

流程和第 1 集一样,项目名称填 折线与柱状图:

欢迎页

选择项目类型

填写项目名

进入工作台

模块面板搜「原生界面」→ 启用「new_emoji 原生界面库」(首次弹登录框,登录一次即可):

搜索并启用

登录

已启用

界面设计 → 选中窗口 → 确认「设计后端」是 new_emoji 模块:

切换设计后端

工具箱

3. 设计界面 ​

窗口 1000×680,两张图左右并排,下面一张协议速查条。

控件名称左距顶距宽度高度关键属性
文本 Text标题文本322070036📈 图表(一):折线图与柱状图,字号 21 粗体
文本 Text副标题文本326288024字号 13,#94A3B8
分割线 Divider标题分割线329693628🖱 图表是纯展示件:能看、能悬停、能点,但不能运行期改数
文本 Text折线标签3213243022① LineChart 折线图(面积 + 悬停提示)
折线图 LineChart访问趋势32158430280points 七条;showArea=真;showTooltip=真;showAxis=真
文本 Text柱状标签49213247622② BarChart 柱状图(垂直 + 显示数值)
柱状图 BarChart销售排行492158476280bars 五条;orientation=1(垂直);showValues=真;showAxis=真
文本 Text数据协议说明3245293660字号 12,#94A3B8,自动换行
文本 Text状态文本32522936120字号 14,#7DD3FC,自动换行

3.1 数据格式:一行一条,标签和数值之间放一个制表符 ​

折线图的 points(七个点):

周一	12
周二	18
周三	26
周四	22
周五	31
周六	28
周日	35

柱状图的 bars(五根柱子):

灵码IDE	42
伴生APK	35
AI Bridge	28
模块市场	19
官网	12

在属性面板里,这两项都是「字符串列表」:一行填一条,标签敲完按一次 Tab 再敲数值。生成器会把它们拼成 new_emoji 的行协议下发给 EU_CreateLineChart / EU_CreateBarChart。

红线:别用空格代替制表符。 分隔符只认制表符,写成空格会被当成「标签里带了一串空格、数值为空」,图就画成贴底的一条线。

3.2 样式开关 ​

属性属于作用
showAxis两者画不画坐标轴与首末标签
showArea折线折线下方填色块
showTooltip折线鼠标停在点上时弹「标签 数值」
chartStyle折线线条样式编号,0 是默认
orientation柱状0=水平、1=垂直
showValues柱状显示数值(垂直时只显悬停那根)
selectedIndex两者设计期预选中第几项

摆完的画布:

设计器全景

4. 写代码 ​

lcpp
类 MainWindow
    事件 _MainWindow_创建完毕()
        控件_设置文本(状态文本, "📈 欢迎来到图表第一课。把鼠标停在折线的点上会弹提示;点一下图表,这里会报出按下位置。")
        调试输出("折线与柱状图演示已创建完毕")
    结束

    事件 _访问趋势_鼠标按下(整数型 横坐标, 整数型 纵坐标, 整数型 鼠标按钮)
        控件_设置文本(状态文本, "📈 折线图:按下位置 x=" + 到文本(横坐标) + " y=" + 到文本(纵坐标) + ",按钮 " + 到文本(鼠标按钮) + "。图表只报坐标,不报第几个点。")
    结束

    事件 _销售排行_鼠标按下(整数型 横坐标, 整数型 纵坐标, 整数型 鼠标按钮)
        控件_设置文本(状态文本, "📊 柱状图:按下位置 x=" + 到文本(横坐标) + " y=" + 到文本(纵坐标) + "。想按柱子取值,只能回设计器对着 bars 列表看。")
    结束
结束类

两个看点:

  1. 处理器参数必须带类型(整数型 横坐标 等),这是 new_emoji 所有控件的统一要求,不带类型会被「事件契约不匹配」阻断构建。
  2. 鼠标按下 的坐标是相对控件内容区的,不是窗口坐标。想换算成「第几根柱子」得自己按柱子数均分宽度——本集不推荐这么做,因为柱状图内部还有左右内边距和标签列,均分算出来的索引会偏。要精确取某根柱子的值,请回设计器看数据,或改用表格组件承载同一份数据。

代码上半

代码下半

5. 编译前先看错误列表 ​

点「编译当前项目」,先看底部错误列表——零报错再继续:

错误列表零报错

6. 运行!悬停、点击各试一次 ​

点「运行」。左边折线带面积填充、第一个点上还挂着提示气泡;右边五根彩色柱子:

运行窗口

① 把鼠标停在第二根柱子上——只有被悬停的那根在顶部显示数值「35」,其余四根不显示。这就是 orientation=1(垂直)时 showValues 的真实行为:

悬停柱子

② 点一下折线图的第三个点——提示气泡停在「周三 26」,状态栏报出按下坐标,但不会告诉你点的是第几个点:

点折线图

③ 点一下柱状图——同样只报坐标。想按柱子取数,只能回设计器对着 bars 列表看:

点柱状图

7. 导出源码包 ​

命令面板执行「项目:一键导出 LCPP 源码包」即可。

本集源码包 ​

下一集预告 ​

图表(二):DonutChart 环形图与 Gauge 仪表盘——占比读数与「带刻度的表盘」怎么配。