条形负值标签显示在右边

怎么把负数的标签也显示到右边image.pngimage.pngimage.png

FineReport 东云川 发布于 2025-4-21 13:49 (编辑于 2025-5-12 13:50)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
ID1208Lv6高级互助
发布于2025-4-21 14:41

image.png

条件显示-标签-自定义

image.png

function(){ 

return '<p style="padding-left:100px">'+this.value+'

';

}

  • 东云川 东云川(提问者) 这样子相当于写死了,没有自适应的话,换一个查询条件,这个位置不变的话数据和条形图对不上,(我给的条件是<0,就使用这个js标签),具体参考补充图片.
    2025-04-21 15:54 
  • ID1208 ID1208 回复 东云川(提问者) JS这个目前不支持自适应,只能说是调整到一个比较合适的位置。或者可以获取字段的长度,然后条件判断,设置不同的长度
    2025-04-21 15:58 
  • 东云川 东云川(提问者) PUSH一下解决方案吧,基本思路就是老哥给的这个,具体js的判断逻辑获取 (最小值绝对值/最大最小值的绝对值和)算出占比,通过这个占比来判断左边距多少px,以下是代码:function() {
    var points = this.series.points; // 获取当前系列所有的数据点
    var total = 0;
    var max = -Infinity;
    var min = Infinity;

    // 遍历所有数据点,计算总和、最大值、最小值
    for (var i = 0, len = points.length; i max) max = value;
    if (value < min) min = value;
    }

    // 仅当最小值是负数时才计算 padding-left
    var paddingStyle = "";
    if (min < 0) {
    var absMin = Math.abs(min);
    var absMax = Math.abs(max);
    var totalLength = absMin + absMax; // 总长度 = |min| + |max|
    var ratio = absMin / totalLength; // 占比 = |min| / (|min| + |max|)

    // 计算比例系数:1/15→20px,1/3→100px
    var slope = (100 - 20) / (1/3 - 1/15); // 斜率 = (100-20)/(1/3-1/15) = 300
    var intercept = 20 - slope * (1/15); // 截距 = 20 - 300*(1/15) = 0

    // 计算 padding-left: padding = slope * ratio + intercept
    var paddingLeft = slope * ratio + intercept;
    paddingStyle = `style="padding-left:${paddingLeft}px"`;
    }

    // 返回格式化字符串:数据点值(占比百分比)
    return `

    ` +
    this.value + " (" +
    FR.contentFormat(this.value / total, '#0.0%') + ")" +
    "

    ";
    }
    2025-05-12 13:23 
最佳回答
0
用户k6280494Lv6专家互助
发布于2025-4-21 13:50(编辑于 2025-4-21 13:51)
  • 3关注人数
  • 72浏览人数
  • 最后回答于:2025-5-12 13:50
    请选择关闭问题的原因
    确定 取消
    返回顶部