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

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

相关推荐
by__csdn1 分钟前
JavaScript性能优化实战:异步与延迟加载全方位攻略
开发语言·前端·javascript·vue.js·react.js·typescript·ecmascript
牛三金3 分钟前
魔改-隐语PSI通信,支持外部通信自定义
服务器·前端·算法
杨超越luckly4 分钟前
HTML应用指南:利用GET请求获取全国瑞思教育门店位置信息
前端·python·arcgis·html·门店数据
尘缘浮梦6 分钟前
chrome英文翻译插件
前端·chrome
HIT_Weston7 分钟前
58、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(二)
前端·ubuntu·gitlab
这是个栗子12 分钟前
【问题解决】Vue2 与 Vue3项目中 Node.js 版本选择
前端·node.js·nvm
222you13 分钟前
SpringBeanFactory
java·服务器·前端
苏打水com14 分钟前
第十一篇:Day31-33 前端安全与性能监控——从“能用”到“安全可靠”(对标职场“系统稳定性”需求)
前端·javascript·css·vue.js·html
fpl111615 分钟前
npm :无法加载文件 D:\...\nodejs\npm.ps1,因为在此系统上禁止运行脚本
前端·vscode·npm·node.js·命令模式
LYFlied18 分钟前
LeetCode热题Top100:核心算法思想与前端实战套路
前端·算法·leetcode·面试·算法思想·算法套路·解题公式