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
相关产品推荐
相关产品推荐

