全部文档

图表

图表控件主要用于在 UX 页面中完成各类数据分析与可视化展示,常见场景包括:

  • 预算/费用分析:按科目、部门、项目、区域等维度做金额和占比分析,支持预实对比、TopN 排序等;

  • 经营分析:通过折线图、柱状图、组合图等展示收入、利润、现金流等指标的趋势和结构;

  • 明细钻取:从图表点击钻取到下钻图表或清单表/明细表,实现从汇总到明细的多层联动;

  • 多图仪表盘:在同一页面中,通过 Tabs 组合多个图表视角,配合公共筛选器和变量,实现一页看全局。

图表在数据层面通常依赖以下数据源类型:

  • 财务模型数据源:适用于多维分析和预实对比场景;

  • 分析查询 / DeepQL 数据源:适用于复杂聚合与跨对象分析;

  • Python 数据源:适用于定制化计算与业务规则较多的场景。

本手册以财务模型为主线,结合预算分析等典型页面,说明如何创建和配置图表。

在创建图表前,建议先完成以下准备工作:

  • 在平台中注册并配置好 UX、财务模型等相关组件;

  • 在财务模型或分析查询中设计好需要的维度结构和度量字段,并录入或准备好数据(必要时提前完成预计算)。

下面以财务模型数据源为例,演示从 0 到 1 搭建一个最基础的柱状图。

  1. 创建 UX 元素

    在元素管理界面点击【新建】,选择 UX:

  2. 添加数据源

    切换到数据源标签页,点击【添加】,在弹窗中选择数据源类型(此处选择财务模型):

    点击【下一步】,选择具体的财务模型元素,点击【确定】:

    在查询配置中,将维度分配到背景、行、列区域,配置需要的维度成员或表达式,点击【确定】完成数据源配置:

  3. 拖入图表并绑定数据源

    切换到控件栏标签页,将图表控件拖拽至画布,在弹出的数据源选择弹窗中选择刚创建的数据源,点击【确定】:

  4. 配置图表字段

    在图表属性中,选择图表类型(默认为柱状图),轴字段选择 Period,值字段选择 data,即可渲染出基础柱状图:

  5. 保存 UX 元素

    点击【保存】,在弹窗中输入编码和描述,选择保存路径后点击【确定】完成保存:

此时我们发现上述柱状图月份乱序显示,实际场景中我们需要按照月份进行排序。 配置如下:进入数据源,点击数据处理与转换模块的【编辑】按钮,弹出弹窗,排序方式选择“按指定列排序”,维度选择Period,【确定】,保存元素,此时图表轴就会按照Period维度成员的顺序进行排列。

我们还想看每个月的数据由哪些科目成员组成,此时可以通过颜色进行区分。 配置如下:图表属性配置界面,颜色选择Account,设置成“堆叠”展示,还可选择不同颜色模板。

若要对同月份的不同科目成员的数据进行对比,可将颜色字段设置为“分组”展示

在预算分析等场景中,常用饼图或环形图展示各科目/项目的占比情况,典型配置包括:

  • 图表类型:选择饼图(pie),如需环形效果,可设置内半径(innerRadius)大于 0,例如 0.7;

  • 数据绑定:将类别字段(如科目 Account)作为颜色维度,将金额字段(如 data)作为值字段;

  • 颜色配置:可选择系统调色板(如 palette10),也可以按维度成员手动指定颜色,适用于“区域/品牌/部门”等希望颜色固定不变的场景;

  • 标签与提示

    • 在工具提示中配置展示的维度和度量字段,并为金额字段设置单位(如“万”/“亿元”)、小数位数和千分位格式;

    • 在数据标签中可同时展示“名称 + 数值”,并继承相同的格式设置;

  • 标题与图例:可在图表标题中注明分析口径(如“费用占比(可钻取)”),图例位置通常放在底部,方便横向空间有限时阅读。

通过颜色、标签和单位的组合配置,可以让预算和费用类图表在对比占比时更加直观。

通过选择不同的年份、组织、场景实现人力成本实际数与预测数对比的动态查询。

我们希望图表能够跟随筛选条件实时变化:用户在页面上选择年份、组织、场景等条件后,图表自动根据最新条件从数据源重新取数。

由于这些条件是动态的,无法在数据源中写死固定值,因此需要:

  • 在页面中放置筛选控件(通常为维度选择器或下拉框),承载用户输入;

  • 在数据源的查询配置中,使用表达式直接引用这些控件的值,作为财务模型或分析查询的入参;

  • 勾选数据源的【参数变化时自动执行】,使得每次筛选器值变化时自动刷新图表。

  1. 在控件栏的自定义组件中拖入多个「维度选择器」到画布中,分别关联 Year、Scenario、Org 等维度,并配置好可选范围与默认值:

  1. 在数据源的查询配置中,直接引用筛选控件的值作为查询条件,其中 deep_dimension_VXzz 为 Year 的维度选择器编码:

也可以通过表达式 $components.object_select_NY4A.value 的形式引用控件值,其中 object_select_NY4A 为 Org 维度选择器编码:

表达式相关说明:

year{$components.deep_dimension_VXzz.value} 为例,其中:

  • $components.deep_dimension_VXzz.value 是获取维度成员值的表达式,用于动态读取 Year 维度选择器当前选中的成员;

  • 将该表达式写入财务模型脚本或查询条件中,即可在每次 Year 变更时自动刷新图表。更多表达式用法可参考 表达式 章节。

  1. 拖拽图表控件至画布中,选择配置好的财务模型数据源作图,并在数据源上勾选【参数变化时自动执行】。此时图表即可根据筛选器的切换进行动态查询:

预算编制场景下,所有用户对当前年份统一进行预算编制,并对当前年份的预算结构总量进行分析,不同部门用户可针对各自部门进行相关数据查看。

在上述场景中,我们希望:

  • 默认年份由平台统一控制(如当前预算年度),而不是每次都由用户手动选择;

  • 不同用户登录时,默认组织自动带出为各自所在部门。

因此可以通过变量元素配置:

  • 一个全局变量 Year(例如默认值为当前预算年度);

  • 一个用户变量 Entity(例如默认值为集团级组织,自定义值设置为用户所属部门)。

图表页面中的维度选择器可将默认值绑定为这些变量,从而实现“按年/按部门打开即有默认筛选”的效果。

  1. 在变量元素中添加全局变量 Year,将值设置为预算年度(如 2023 年);添加用户变量 Entity,默认值设置为集团级组织,自定义值设置为用户所在部门,如 EC01-集团总部:

  1. 在 UX 页面「变量」标签页中选择变量元素,引入需要用到的页面变量 Year、Entity:

  1. 在图表上方的维度选择器中,将默认值绑定到对应变量:

  • Year 维度选择器默认值配置为「UX 变量 Year」;

  • Entity 维度选择器默认值配置为「UX 变量 Entity」。

使用效果如下:

注:此处变量值字段类型仅支持维度类型字段。

在一个分析页面中,往往需要通过点击某个图表的部分区域(如某根柱子、某个饼图扇区),联动其他图表或清单表展示更细粒度的数据。常见的联动方式有两种:

  • 通过控件中转:图表点击事件修改某个筛选控件的值,再由筛选控件驱动其他图表或清单表联动;

  • 直接在数据源中引用图表点击数据:在目标图表的数据源查询条件中直接读取来源图表的点击项(clickItem),实现图表之间的参数传递。

点击不同月份、场景的人力成本对比图表,可以在同一页面的另一张图或明细表中查看对应月份及场景的薪资项明细。

页面上配置两个图表:一个柱状图用于展示按月份/场景的人力成本对比,另一个饼图用于展示薪资项明细。明细图表的数据源查询条件来自对比图表的点击结果。

当用户点击对比图表中的某根柱子时,通过图表特有的 clickItem 变量获取点击的 Period、Scenario 等字段,并在明细图表的数据源查询条件中使用,从而实现两个图表之间的联动。

  1. 配置两个图表:一个饼图(薪资项明细图表),一个柱状图(人力成本对比图表)。

  2. 在薪资项明细图表的数据源行列中配置表达式,如下图所示:

说明:

  • Period 字段切换成表达式,以获取人力成本对比图表点击抛出来的数据,写法为:$components.chart_BISI.clickItem?.["period"] || 'TotalPeriod',Scenario 字段同理;

  • 其中 chart_BISI 为人力成本对比柱状图的编码,period 为需要获取的维度成员数据;

  • clickItem 为图表特有的变量,用于获取图表点击事件触发后的数据;

  • TotalPeriod 为无点击事件时的默认值,确保页面初始加载时也有合理展示。

注意:明细图表的数据源需勾选【参数变化时自动执行】,否则在点击对比图表后明细图表不会自动重新查询。

点击不同的销售实体的销售收入图表,可以按不同的工厂查看不同产品销售明细;同时页面顶部还有多个筛选器控制整体视图,希望所有条件最终都集中体现在筛选区域上。

除了通过筛选器进行筛选外,很多页面希望“点哪看哪”:当点击某个图形(如某根柱子)时,页面其他区域根据点击内容被筛选。

若直接在多个数据源中同时使用图表的 clickItem 作为条件,容易出现:

  1. 目标图表或清单表已通过筛选器联动,叠加图表联动后条件不一致,造成歧义;

  2. 图表的默认值难以统一管理(无点击时取哪个条件);

  3. 页面上难以一眼看出当前生效的筛选条件。

因此,推荐做法是:将所有需要用到的筛选条件统一放在顶部筛选区域,图表点击只负责修改筛选控件的值,再由筛选控件驱动其他图表和清单表联动。

  1. 配置两个图表:一个饼图(明细图表)、一个柱状图(销售收入图表),同时配置一个「工厂」控件(POV)作为明细图表数据源的查询条件,配置方式同前文筛选器场景;

  2. 在销售收入图表的「点击数值单元格」事件中,配置【控件值修改】动作,如下图所示:

事件动作说明:

  • 点击数值单元格:即点击图表中的图形触发的事件;

  • 控件值修改:通过该动作可以修改筛选控件的 value;

  • 目标控件:选择需要修改的控件,为了实现图表联动,这里需选择明细图表的数据源所依赖的 POV 控件(如「工厂」);

  • 赋值为:切换成表达式,以获取销售收入图表点击事件抛出的数据,写法为:$components.chart_zGir.clickItem.Entity_s

    • 其中 Entity_s 为具体需要获取的维度成员数据;

    • clickItem 为图表特有的变量,用于获取图表点击事件触发后的数据。

同样需要注意,明细图表的数据源需勾选【参数变化时自动执行】,否则修改 POV 后图表不会自动查数。

按费用性质划分,对同种费用性质不同部门的信息化支出进行对比分析,需要在财务模型脚本中同时表达「部门范围」和「费用性质」两个条件。

在财务模型中,取数脚本是一段由多个函数组合而成的表达式,例如:

  • Base(...):指定某个维度成员或成员集合作为基础筛选范围;

  • Attr(ud5,'1'):按维度属性(如费用性质 ud5)做筛选;

  • AndFilter(A, B):将多个条件合并为一个复合筛选条件。

通过将这些函数与 UX 中的控件值组合,就可以实现「根据页面选择的费用性质动态拼接脚本」,而不用在模型里写死具体值。

  1. 在画布中拖拽一个“费用性质”选择框,信息化支出数据源为财务模型,Entity、Account 放在行列上,其他维度放背景,假设 Entity 的 ud5 属性代表费用性质。

  2. 在数据源的取数脚本中,根据需要拼接表达式,例如:

    • 若 ud5 所需过滤的值为固定值 1,则表达式为:

      `AndFilter(Base(${$components.deep_dimension_7r3R.value},0), Attr(ud5,'1'))`
      
    • 若 ud5 所过滤的值来自页面控件,则表达式为:

      `AndFilter(Base(${$components.deep_dimension_7r3R.value},0), Attr(ud5,'${$components.input_FWTf.value}'))`
      

    其中 $... 为 JS 表达式,`...${...}...` 为 JavaScript 模板字符串语法,用于在财务模型脚本字符串中“注入”当前控件的值。

  3. 拖拽图表控件至画布,配置柱状图,轴选择 Entity,值选择 data,必要时可勾选坐标轴转置。

注意:数据源需勾选【参数变化时自动执行】,使用时切换费用性质控件值时,图表才会跟随联动。

在人力成本对比场景中,往往需要同时取两个场景的数(如“基线场景”和“对比场景”),财务模型在传参时希望两个成员以「分号分隔的字符串」形式出现,从而与直接勾选多个维度成员时的传参格式保持一致。

为此,可以在查询配置中,将两个单选筛选器的值通过表达式拼接为一个字符串,例如:

Copy
$components.comp_sce.value + ";" + $components.base_sce.value

其中:

  • comp_sce 为对比场景筛选器编码;

  • base_sce 为基线场景筛选器编码;

  • ; 用于在脚本中分隔多个成员。

通过不同的视角查看下半年资金计划,支持多视角查看。

根据业务场景,我们希望根据用户在多选筛选器中选择的多个成员动态查询图表,需要将这些成员作为参数传给财务模型。由于多选控件的值在 UX 中通常是一个数组,需要先在表达式中将其转换为财务模型脚本要求的格式。

  1. 在控件栏的自定义组件中拖入一个“维度选择器”到画布中,关联 Dataview 维度,开启【允许多选】配置,并配置好可选范围、默认值:

  1. 在数据源的查询配置中直接引用动态的控件值,选择 FX 表达式:

    Copy
    $components.deep_dimension_kybq.value?.join(';')
    

表达式相关说明:

  • 其中 deep_dimension_kybq 为 Dataview 维度选择器编码;

  • 维度筛选器为多选时,控件值为数组格式,因此需要通过 join(';') 将数组转换成由分号拼接的字符串,以符合财务模型脚本的传参规范。

  1. 拖拽图表控件至画布中,选择配置好的财务模型数据源作图,此时即可按照多视角对下半年资金计划进行查看。

项目做预实对比分析时,经常会用到组合图。接下来介绍两种常规的预实对比场景组合图:

  • 一种配置柱形+散点组合图(通过柱子与竖线做预实对比)或者柱形组合图(通过空心与实心柱子做预实对比),此种方式比较直观地体现是否达到预测目标,详情见场景一;

  • 一种配置折线组合图,此种方式能更好体现趋势的变化及对比,详情见场景二;

1、财务模型数据源查询配置中,将period、scenario分配到行列上

2、数据处理与转换将scenario列成员Actual-实际数、Forecast-预测数透视出来

3、图表类型选择组合图(柱状图+散点图)时,period做轴,柱状图中值为Actual实际数,形状为实心;散点图中值为Forecast预测数,形状为竖线。通过柱子和竖线更加直观清晰的体现实际数是否达到预测目标。

图表类型选择组合图(柱状图+柱状图)时,period做轴,柱状图1中值为Actual实际数,形状为实心;柱状图2中值为Forecast预测数,形状为空心。通过实心和空心柱子更加直观清晰的体现实际数是否达到预测目标。 注意:组合图受图形顺序控制,顺序错误会造成图形遮挡覆盖等现象。

1、财务模型数据源查询配置中,将period、scenario分配到行列上

2、图表配置时,图表类型选择组合图,添加多个折线图(折线图能更好体现变化趋势),共享轴为period,多个折线图的值均为scenario的成员,值均设置为主轴,可单独配置对应折线图的形状(样式:直线、平滑;线型:实线、虚线;数据点:实心、空心、无)

最终效果:

在预算分析、费用分析等场景中,图表往往不是单独出现,而是以“多图仪表盘”的形式组合在一个 UX 页面中,常见结构如下:

  • 顶部为筛选区域:例如年份、组织、场景、项目等筛选器或维度选择器;

  • 中部为多标签页(Tabs):每个标签页下放置 1 个或多个图表,分别展示不同视角(如费用占比、按项目/部门/区域的费用分析、预实对比趋势等);

  • 底部或侧边可配合清单表/表格(批量编辑)展示明细数据,支持从图表点击钻取到明细。

典型搭建方式:

  1. 为每个分析视角准备对应的数据源(可为财务模型、分析查询、DeepQL 或 Python 数据源),并在查询配置中统一引用筛选控件或变量;

  2. 使用多标签页控件,将多个 pc-chart 图表分别放入不同的标签页,每个图表绑定各自的数据源和字段配置;

  3. 根据需要配置图表点击事件:

    • 通过“点击数值单元格”事件 + 跳转动作,实现从图表到明细页面的钻取;

    • 或通过“点击数值单元格”事件 + 控件值修改/查询数据源动作,实现同页内图表与清单表之间的联动;

  4. 在图表的样式和数据配置中,结合颜色、标签、单位、排序等能力,让各个视角的图表既统一风格、又突出重点(如 TopN、同比/环比变化等)。

通过这种多图组合方式,可以将预算结构、费用构成、趋势变化等信息集中呈现在一个页面中,提升分析效率。

在数据源管理中,点击添加,在弹窗数据源类型中选择财务模型,点击确定生成数据源实例。

通过取数范围的配置可以调用财务模型的取数接口拿到相应的数据,支持UI与脚本模式

  • 所谓脚本模式即调取财务模型取数接口时需传给财务模型的一段特定格式的脚本,财务模型通过解析该脚本中的维度筛选出数据返回给UX;

  • 可配置固定值或表达式;

  • 可以在此处配置按维度成员进行排序;

  • 透视列:财务模型原生取到的为含data列的格式,通常需要进行透视处理。选择要透视的列以及需要用到的成员,会进行行转列的透视操作,便于后续的作图;

  • 维度显示格式:可配置显示名称/描述;

  • 合并字段:通常用于展示有效组合,将对值与描述均以”-“拼接。

总费用金额、占比分析时,需要对费用及占比两个数据进行展示,常规的data值无法满足此种场景,此时可通过对维度(如scenario)需要用到的成员进行透视处理。

此时数据标签中可以添加透视出来的多个成员,数据标签显示位置“居外”,我们的饼图即可同时展示出金额及占比两个值。

年度预算分析时,需对去年执行数以及今年预算数等进行对比分析,此场景下柱状图轴需要对年份及场景拼接。

1、首先财务模型数据源分配维度时,需配置多行列,行列1:年份=当前年份-1,场景=实际数;行列2:年份=当前年份,场景=年初预算;行列3:年份=当前年份,场景=年中预算。

2、数据处理与转换中,需要对Year和Scenario做合并处理,即合并字段选择Year、Scenario即可。

3、将图表控件拖拽到画布上,选择柱状图,轴下拉选择合并字段Year-Scenario,值为data,颜色Account(堆叠显示)。

  • 在结构中会显示财务模型传参的数据结构,包括行列维度、财务模型存数的字段data;

  • 参数变化时自动执行:勾选后系统会实时监听脚本模式中参数的变化,然后自动查询无需额外配置查数动作,建议勾选;例如,配置筛选器动态查询图表时,若勾选参数变化时自动执行,切换筛选器时,图表会自动查询切换后的数据;若不勾选,切换筛选器,图表不会根据切换后的数据进行查询展示。

  • 任一参数为空值时不执行:勾选后,查询数据源数据时只要有一个参数为空(null/undefined/空字符),则不调用查数接口。解决接口入参必填时,多个参数从无到有变化,导致调用多次,并且出现接口抛错,建议勾选。

下方只对一些不太好理解的图表配置进行介绍说明,对于图表常规配置不再赘述。 排序方式:即图表渲染时数据的排序方式,可添加多个维度。

图表的排序通常包括两层:

  • 数据源排序:在数据源的“取数范围”或“数据处理与转换”中配置,例如按 Period、Scenario 等维度成员顺序排序,影响返回数据的默认顺序;

  • 图表内排序(chart 排序):在图表属性中的“排序方式”或类似 chartSorts 配置中,指定按某个度量字段(如 data)从大到小排序,用于控制最终呈现顺序(例如饼图从大到小排列、柱状图按金额排序)。

在预算分析等场景中,常见做法是:在数据源中保证时间/层级的自然顺序,在图表内部按金额或占比做二次排序,使“Top N”更突出。

  • 初始默认柱形图,可选择饼图、瀑布图、散点图等其他类型图表;

  • 对于柱形图,轴选择需要分析的维度,有几个成员就会生成几根柱子,值选择data数据,选择完后即可渲染出图表;

经营性净现金流间接法:从净利润出发,通过调整不涉及现金的收入、费用以及营业外收支等项目,同时剔除投资活动和筹资活动对现金流量的影响,从而计算出经营活动产生的现金流量。此种场景,可通过瀑布图展示。

1、添加财务模型数据源,Year、Entity、Period、View等可取界面维度筛选器控件的值,FX表达式:$components.XXX.value,数据处理与转换-按指定列Account维度成员排序,勾选“参数变化时自动执行”和“任一参数为空值时不执行”

2、拖拽图表控件至画布,选择关联已有数据源,【确定】

3、图表类型选择“瀑布图”,选择轴Account,值data,可根据数据项配置颜色。

4、样式配置中根据实际情况配置对应样式属性,如标题、X轴旋转角度、Y轴单位计算格式等。选择瀑布图小计项:经营性实得现金流。

返回数据结构如下(_start、_end列忽略):

使用视图效果如下:

  • 坐标轴转置: 勾选后轴会显示在Y轴上,值显示在X轴上;

  • 工具提示: 悬停到图表上时显示的tooltips,可配置维度成员或data,可为数值字段设置单位(如千、万、亿元等)、千分位、小数位数等格式;

  • 数据标签: 用于显示或标记数据值,可选择显示维度名称、数值或两者组合,支持与工具提示一致的数值格式配置;

位置优化配置包括:超出时隐藏、重叠时隐藏、重叠时调整、不处理。

超出时隐藏效果:

重叠时隐藏效果:

重叠时调整效果:

不处理效果:

  • 显示范围: 可自定义配置Y轴或X轴刻度的最大值、最小值以及每个刻度之间的间隔;

支持动态值配置: 坐标轴由于数据是动态的,需要按动态的比例配置最大最小值。最大值、最小值中增加表达式配置,随着用户输入的值不同,坐标轴动态改变。 默认显示范围效果:

自定义动态值配置:

($dataSources.data_QUERY8_Bz3V.data ?? []).reduce((max, obj) => obj?.['激励结果'] > max ? obj?.['激励结果'] : max, -Infinity) * 1.2
($dataSources.data_QUERY8_Bz3V.data ?? []).reduce((min, obj) => obj?.['激励结果'] < min ? obj?.['激励结果'] : min, Infinity) * 0.8

其中:

  • data_QUERY8_Bz3V为数据源编码;

  • 激励结果为图表中值选择的字段;

  • 1.2,0.8为想要显示的范围比例;

使用时按需求替换即可。

自定义动态值显示效果:

坐标轴最大最小值显示范围超出: 超出坐标轴的值会被强行压缩到坐标轴范围内。 未配置显示范围时效果如图:

配置了最大值/最小值,且存在超出配置范围的数据时,效果如下:

  • 自动旋转刻度: 当轴刻度较多显示较拥挤时,我们可以勾选【自动旋转刻度】,此时刻度会旋转显示。

未勾选时效果:

勾选后效果:

  • 自动缩略刻度: 当轴刻度较多显示较拥挤时,我们可以勾选【自动缩略刻度】,此时刻度会缩略显示。

未勾选时效果:

勾选后效果:

  • 单位计算: 可对data的数据进行二次处理,例如单位计算设置为千,则data数据会除以1000后再渲染在图表中,此计算为纯前端计算, 不影响数据源的数据;

  • 缩略轴: 当图表中数据量比较多,用户希望集中关注某个区域数据的时候,可拖动略轴的滑条进行查看;

  • 小计项: 小计是瀑布图独有的功能,每个小计项是前面一系列柱子计算的结果,通过配置小计项可以实现一个图表放置多个瀑布图;

  • 大小: 一般指图表中每个图的大小,可手动配置。在散点图中,大小也可以由data值决定(值越大,每一个圆点越大,反之越小);

  • 共享轴: 组合图特有配置,即多个不同的图形公共的轴;

排序配置

2022和2023年计划标准成本与实际成本对比,然后按实际数从高到低排;

  • 排序方式:嵌套;

  • 排序目标:实际场景一般选配在轴上的文本列,此处为Year;

  • 筛选依据:先选数据源里的列实际场景通常为颜色字段,此处为scenario,再选该列的成员Actual-实际数;

  • 排序依据:data,可选降序、升序;

如图例,即要按实际数从大到小,排Year字段。

筛选配置

销售收入预实对比场景,我们可以按实际销售收入进行排序,筛选出销量前10的品类进行分析。 此时需要在图表数据配置中进行排序和筛选配置:

  • 排序方式:按指定列;

  • 排序依据:Actual,降序;

  • 筛选依据:Actual;

  • 筛选方式:前N项,10; 即按照实际数进行排序筛选,金额从大到小,筛选出销量前10的数据进行展示。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send