Echarts如何生成没有上下两端线的箱线图

Echarts如和生成没有两端线的箱线图

正常的箱线图:

没有两端线的箱线图:
解决方案:

1.首先尝试过修改boxplot的itemStyle,但是发现boxplot的itemStyle,但是发现所有线条都去掉了。

js 复制代码
itemStyle: {
          color: colors[0],
          borderColor: 'transparent',
          borderWidth: 0,
          
}
  1. 然后尝试了很多,最终解决就是,

** 2.1.**先变成没有线的样子:

js 复制代码
seriesData.push([
        item.q1,//item.min
        item.q1,
        item.median,
        item.q3,
        item.q3,//item.max
])```
这边把最大值和最小值修改为item.q1,item.q3,这样就没有线了,

### ****2.2**然后再加上```markLine```,这样就可以加上两端的线了,最终代码如下:**
```js
 markLine: {
    silent: true,   // 不响应鼠标事件
    symbol: 'none', // 不显示端点符号
    lineStyle: {
    color: colors[0],  // 中位数线颜色与箱体颜色一致
    width: 2,         // 线条宽度
    type: 'solid'     // 实线
    },
    data: (() => {
    try {
        const markLineData = lanes[0].data.map((boxData, index) => {
        // 获取当前head的原始数据
        const headTitle = lanes[0].heads[index]
        const headData = allHeads.find(h => 
            h.table.toString() === currentTable.title.toString() && 
            h.lane.toString() === lanes[0].lane.toString() && 
            h.title.toString() === headTitle.toString()
        )
        
        if (headData) {
            return [
            { xAxis: index, yAxis: headData.data.min },
            { xAxis: index, yAxis: headData.data.max }
            ]
        }
        return null
        }).filter(Boolean)
        return markLineData
    } catch (error) {
        console.error('Lane1 markLine数据生成出错:', error);
        return []
    }
    })()
    },

又出现了一个小bug,就是有的markline没有画出来,排除了数的问题,排除了数据量大的问题,最终发现是这个图表设置了固定的y轴,后期改为自动生成就完美解决了:

js 复制代码
 let yAxisMin = 0, yAxisMax = 10, adjustedStep = 5;
  if (globalMin !== Infinity && globalMax !== -Infinity) {
    if (selectedTabLevel.value === 'lane' && selectedTab.value) {
      // lane级别:使用固定步长5
      adjustedStep = 5;
      yAxisMin = Math.floor(globalMin / 5) * 5;
      yAxisMax = Math.ceil(globalMax / 5) * 5;

      // 确保至少有3个刻度
      if (yAxisMax === yAxisMin) {
        yAxisMax = yAxisMin + adjustedStep * 3;
      }
    } else {
      // table级别:使用固定步长5
      adjustedStep = 5;
      yAxisMin = Math.floor(globalMin / 5) * 5;
      yAxisMax = Math.ceil(globalMax / 5) * 5;

      // 确保至少有3个刻度
      if (yAxisMax === yAxisMin) {
        yAxisMax = yAxisMin + adjustedStep * 3;
      }
    }
  }
  return {
    categories,
    seriesData,
    allHeads,
    yAxisMin,
    yAxisMax,
    adjustedStep
  }
 
js 复制代码
yAxis: [
    {
        type: 'value',
        gridIndex: 0,
        position: 'left',
        splitArea: { show: true },
        axisLabel: {
        color: '#333',
        fontSize: 10,
        show: true,
        formatter: '{value}'
        },
        scale: false,
        min: tableYAxisMin < -20 ? tableYAxisMin : -20,      // 当数据最小值<-20时使用动态值,否则用固定值-20
        max: tableYAxisMax > 20 ? tableYAxisMax : 20,        // 当数据最大值>20时使用动态值,否则用固定值20
        interval: 5    // 固定步长为5 
    },
]

终于完美解决了,因为是自己项目,大概思路就是这样,项目代码太多了就不贴全了,这种需求也是少。

相关推荐
缓慢更新29 分钟前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易1 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马2 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒2 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
开开心心就好3 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
PedroQue995 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵5 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
开开心心就好6 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了6 小时前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物6 小时前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速