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

Oracle Apex v22.11组合图表Y轴自定义及标签问题求助

解决Oracle Apex v22.11组合图表的两个问题

问题1:Y轴步长设置0.05无效

仅设置step参数无效,是因为oj-chart会自动根据数据范围优化刻度逻辑,需同时指定Y轴的最小值和最大值,强制限定刻度范围。

修改JavaScript初始化代码如下:

function(options){
  options.yAxis = {
    step: 0.05,
    minimum: 0,
    maximum: 1,
    formatType: 'percent'
  };
  return options;
}

设置后图表会严格按照0-1的范围,以0.05为步长生成刻度(0%、5%、10%……100%)。

问题2:折线系列标签仅显示一次

方案1:SQL层面优化(推荐)

修改查询语句,仅在第一条记录中返回Target的数值,其余记录设为NULL,开启标签后只会显示一次:

SELECT CLASSROOM,
  -- 保留原有柱状系列计算逻辑
  CASE WHEN ROW_NUMBER() OVER (ORDER BY CLASSROOM) = 1 THEN .85 ELSE NULL END AS Target
FROM EMP_SAMPLE
GROUP BY CLASSROOM

之后在图表的系列设置中开启Target系列的标签即可。

方案2:JavaScript动态隐藏多余标签

若不想修改SQL,可在图表渲染完成后,通过JS找到折线系列的所有标签元素,仅保留第一个(或最后一个):

function(options){
  // 先处理Y轴步长(按需保留)
  options.yAxis = {
    step: 0.05,
    minimum: 0,
    maximum: 1,
    formatType: 'percent'
  };
  
  // 添加渲染完成后的回调逻辑
  options.rendered = function(context){
    const chartElement = context.element;
    // 定位折线系列的所有标签,注意data-series-id要和你的Target系列名称一致
    const lineLabels = chartElement.querySelectorAll('.oj-chart-item-label[data-series-id="Target"]');
    if(lineLabels.length > 1){
      // 隐藏除第一个以外的所有标签
      for(let i = 1; i < lineLabels.length; i++){
        lineLabels[i].style.display = 'none';
      }
    }
  };
  return options;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:10:24