echarts bar markArea

之前产品给的需求是,在特定的x轴上,给某些指标加上背景颜色,看了Echarts API的markArea,发现不能满足需求。

如果直接使用markArea,且x轴的type为category的话,配置如下:

xAxis: {
  type: 'category',
  ...
},
series: [{
  ...,
  markArea: {
    data: [[
      {
        xAxis: '11月3日',
        itemStyle: {
          color: 'rgba(112, 100, 250, 0.12)',
          borderWidth: 1,
          borderColor: 'rgba(112, 100, 250, 0.6)'
        } 
      },
      {
        xAxis: '11月6日'
      }
    ]] 
  }
}]

得到的效果图为:

echarts1
可以看出,不能完整包含指定的x轴。

后面google(参考链接:Echart: How to set mark area to fill sections in xAxis)发现了一个近似满足需求的处理,思路是通过计算bar的宽度,从而相加得到的,但不能完整包含x轴,效果如下图所示:
echart2

既然不能找到完全满足需求的,那就只能写骚操作了。

思路如下:
(1)多定义一条x轴,type设置为value,但不显示
(2)多定义一个series,将markArea配置放在这个series上,且将该series挂载在(1)的x轴上

xAxis: [
  {...}, 
  {
    type: 'value',
    min: 0,
    max: xAxisData.length, // x轴数据的长度
    show: false,
    silent: true,
    axisPointer: {
      show: false
    }
  }
],
series: [
  {...},
  {
    name: '占位',
    type: 'line',
    xAxisIndex: 1, // 对应第二个x轴
    silent: true,
    markArea: {
      data: [[
        {
          xAxis: '3',
          itemStyle: {
            color: 'rgba(112, 100, 250, 0.12)',
            borderWidth: 1,
            borderColor: 'rgba(112, 100, 250, 0.6)'
          } 
        },
        {
          xAxis: '6'
        }
      ]],  
    }
]

最终的效果图为:

echart3

ECharts中,Bar 图表支持在每个柱子上添加多个标签来显示详细信息。为了实现这个功能,你需要在数据配置中包含每个柱子对应的 label 数据,并设置适当的 options。以下是基本步骤: 1. **初始化 ECharts 实例**: 首先,引入 echarts.js 文件并创建一个新的实例。 ```javascript var myChart = echarts.init(document.getElementById('main')); ``` 2. **设置 Bar 图表数据**: 定义一个包含 x 轴值、y 轴值以及对应的 label 的数据数组。 ```javascript var data = { categories: ['A', 'B', 'C', 'D', 'E'], // 柱子类别 values: [10, 20, 30, 40, 50], // 柱子高度 labels: [ { value: 'Label A1', position: 'left' }, { value: 'Label B2', position: 'right' }, { value: 'Label C3', position: 'top' }, { value: 'Label D4', position: 'bottom' }, { value: 'Label E5', position: 'inner top' } ] }; ``` 3. **配置 Bar 图表选项**: 设置 `series` 中的数据项,包括 `type` 为 `bar` 和 `data` 为上面定义的数据数组,同时配置 `label` 的相关属性。 ```javascript var option = { xAxis: { data: data.categories }, yAxis: {}, series: [{ type: 'bar', data: data.values, itemStyle: { normal: { label: { show: true, position: 'insideTop', // 可以自定义位置,如上面示例中的 'inner top' formatter: function (params) { return params.name + '<br>' + params.data.labels[params.dataIndex].value; } // 格式化函数返回完整的标签内容 } } } }] }; ``` 4. **渲染图表**: 将配置好的选项应用到图表上。 ```javascript myChart.setOption(option); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值