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

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

正常的箱线图:

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

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

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 
    },
]

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

相关推荐
摇曳的精灵20 小时前
前端渲染优化
前端·前端渲染优化
WILLF21 小时前
前端视角:Python requests vs JS axios
前端·python
半个落月21 小时前
在浏览器里运行 DeepSeek-R1:React 对话界面与安全渲染(三)
前端·人工智能·react.js
Synmbrf21 小时前
micro-app 404 问题排查与修复
前端
西安栈上月明软件科技有限公司21 小时前
GEO 友好度检测器技术实现(已开源)
前端
汉堡大王952721 小时前
用 Trae Work 自动化任务,6 分钟生成一份前端生态周报
前端·javascript·人工智能
深圳佛手21 小时前
安装DeepSeek Harness npx @deepseek-ai/dsh web 长时间没反应,安装失败,如何解决?
前端
Csvn21 小时前
事件循环与渲染时机:一文吃透宏任务、微任务和 rAF
前端
章鱼小丸子逃跑中21 小时前
【2025最新版】如何将fnm与node.js安装在D盘?【保姆级安装及人性话理解教程】
前端·javascript·npm·node.js
Larcher1 天前
从 SDD 到可交付:我如何用规范驱动 AI 做出一个 Chrome 翻译插件
前端·后端·架构