首页 > 其他分享 >Echarts实现双x轴,支持均分和非均分的情况

Echarts实现双x轴,支持均分和非均分的情况

时间:2024-08-26 23:48:09浏览次数:11  
标签:chart 支持 echarts 均分 bandWidth optionNew offset var Echarts

效果图

代码

<template>
  <div class="app">
    <div class="demo" ref="demoRef"></div>
  </div>
</template>

<script>
import * as echarts from 'echarts'
export default {
  data() {
    return {}
  },
  mounted() {
    this.initChart()
  },
  methods: {
    initChart() {
      var chart = echarts.init(this.$refs.demoRef)

      var xAxisData = ['长裤', '短裤', '衬衣', '羊毛衫', '背心', '皮鞋']
      //var xAxisGroupData =  [ "裤子", "裤子", "衣服", "衣服", "衣服" , "鞋子" ];
      var xAxisGroupData = ['{offset|}裤子', '', '', '衣服', '', '鞋子'] // 分组显示的标签(组内如果是偶数加上偏移{offset|},如果是计数放正中间)
      var seriesData = [15, 20, 10, 5, 15, 10]

      var groupSeparates = [true, false, true, false, false, true] // 分组分隔线

      // 指定图表的配置项和数据
      var option = {
        title: {
          text: 'echarts自定义分组-静态',
        },
        tooltip: {},
        xAxis: [
          {
            position: 'bottom',
            data: xAxisData,
            axisTick: {
              length: 20, // 刻度线的长度
            },
            axisLabel: {
              margin: 10, // 标签到轴线的距离
            },
          },
          {
            position: 'bottom',
            data: xAxisGroupData,
            axisTick: {
              length: 40,
              interval: function (index, value) {
                return groupSeparates[index] // 根据标识分组的刻度线
              },
            },
            axisLabel: {
              margin: 30,
              interval: 0, // 显示所有标签
              rich: {
                offset: {
                  width: 0,
                },
              },
            },
          },
        ],
        yAxis: {},
        series: [
          {
            type: 'bar',
            data: seriesData,
          },
        ],
      }

      chart.lastBandWidth = 0
      // 监听渲染事件,只要bandWidth发生变化,重新设置标签偏移的值
      chart.on('rendered', function () {
        var bandWidth =
          chart._chartsViews[0].renderTask.context.outputData._layout.bandWidth
        console.log('ddd=>', bandWidth, chart)
        if (chart.lastBandWidth != bandWidth) {
          chart.lastBandWidth = bandWidth
          // 延时执行否则echarts渲染异常
          setTimeout(() => {
            // 加上偏移后重新绘制
            var optionNew = { xAxis: [{}, {}] }
            // 增量更新偏移值
            optionNew.xAxis[1] = {
              axisLabel: { rich: { offset: { width: chart.lastBandWidth } } },
            }
            //console.info(optionNew);
            chart.setOption(optionNew)
          }, 0)
        }
      })

      // 绘制
      chart.setOption(option)
    },
  },
}
</script>

<style lang="less" scoped>
.demo {
  width: 500px;
  height: 600px;
  background-color: orange;
}
</style>

参考文档

https://blog.csdn.net/chch87/article/details/123877652

标签:chart,支持,echarts,均分,bandWidth,optionNew,offset,var,Echarts
From: https://www.cnblogs.com/it774274680/p/18381720

相关文章

  • 国内ubuntu安装docker,支持amd64/arm64
    当前有一台鲲鹏920处理器的服务器,需要在服务器上安装docker,但是由于国内服务器无法访问docker官网,故在收集各资料后,实践后整理出一个简易文档。1.卸载默认安装的dockersudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc2.安装使用https使用存储库的......
  • echarts 地图 显示某一个省的地图,点击可进入市 点击空白可返回上级 - 内蒙古demo
    我这里echarts用的4.5.0官网https://echarts.apache.org/v4/examples/zh/index.html#chart-type-map获取地图json数据工具https://datav.aliyun.com/portal/school/atlas/area_selector<!DOCTYPEhtml><!--获取地图地址--><!--https://datav.aliyun.com/portal/school......
  • 意甲:球星压阵,科莫能支持?
    昨天看了皇马的上半场比赛,一方面是坚持不住犯困就没看下半场,另外也确实是不好看。安切洛蒂很意外让居勒而不是莫德里奇顶替贝林厄姆,但昨天居勒踢得远不如欧洲杯时期好,拿球没效率还频繁丢球权,迫使巴尔韦德多次高速回追才没丢球。没想到一觉醒来比分是3-0,一场3-0的比赛按说半全场......
  • 网站提示415 Unsupported Media Type:不支持的媒体类型怎么办
    当遇到“415UnsupportedMediaType”错误时,这意味着服务器无法处理请求中提供的媒体类型(MIME类型)。这种错误通常发生在发送POST、PUT或PATCH请求时,服务器期望某种特定类型的请求体,但客户端发送了不同类型的媒体。解决方案检查Content-Type头确认请求头中的 Conten......
  • 网站提示505 HTTP Version Not Supported:服务器不支持请求的HTTP版本怎么办
    当遇到“505HTTPVersionNotSupported”错误时,这意味着服务器不支持客户端请求中使用的HTTP版本。这种情况通常发生在客户端尝试使用较新的HTTP版本,而服务器仅支持老版本的协议时。解决方案检查客户端使用的HTTP版本确认客户端使用的HTTP版本。如果客户端使用的是HTTP/......
  • 网站提示501 Not Implemented:服务器不支持请求的功能怎么办
    当遇到“501NotImplemented”错误时,这意味着服务器不支持请求中指定的功能或方法。这种错误通常出现在客户端尝试使用服务器尚未实现或不支持的功能时。解决方案检查请求方法确认请求中使用的HTTP方法是否被服务器支持。例如,如果使用了 PATCH 方法而服务器仅支持 PO......
  • 常见问题解决 --- 如何给一个不支持配置代理的程序抓取https流量数据
    比如我有一个C#编写票务系统,它内嵌浏览器功能,我想抓取它的流量,但是这个客户端不支持配置代理设置解决办法:1.安装配置proxifier开启全局代理服务。安装好后网上有激活码激活一下,点击profile-proxyserver,添加一个代理服务器127.0.0.1,端口8080,协议https。点击profile-prox......
  • vue使用Echarts绘制地图
    1.安装echarts和echarts-map插件npminstallecharts--savenpminstallecharts-map--save2.在组件中引入echarts和echarts-mapimportechartsfrom'echarts'import'echarts/map/js/china'//引入中国地图3.在mounted钩子函数中初始化echarts实例mounted(){......
  • 异源数据同步 → DataX 为什么要支持 kafka?
    开心一刻昨天发了一条朋友圈:酒吧有什么好去的,上个月在酒吧当服务员兼职,一位大姐看上了我,说一个月给我10万,要我陪她去上海,我没同意朋友评论道:你没同意,为什么在上海?我回复到:上个月没同意前情回顾关于DataX,官网有很详细的介绍,鄙人不才,也写过几篇文章异构数据源同步之数据......
  • 视野修炼-技术周刊第98期 | Node原生支持TS
    欢迎来到第98期的【视野修炼-技术周刊】,下面是本期的精选内容简介......