当前位置: 首页 > article >正文

echarts--Y轴名称超宽换行显示行高问题处理

设置yAxis.axisLabel.overflow:break为超宽换行

            yAxis: [{
              type: 'category',
              inverse: true, //y轴坐标轴向下
              position: 'left', // 设置 y 轴的位置在左边
              offset: 65, // 设置 y 轴距离左边的偏移量
              axisLine: {
                show: false,
              },
              axisTick: {
                show: false
              },
              axisLabel: {
                show: true,
                interval: '0', //坐标轴刻度标签的显示间隔,设置成 0 强制显示所有标签。
                fontSize: 12,
                color: '#bbb',
                width: 130,
                overflow: 'break',//break 超宽换行 truncate 超宽显示...
         
              },
              data: yName,
            }],

在这里插入图片描述
配置rich解决行高问题

              axisLabel: {
                show: true,
                interval: '0', //坐标轴刻度标签的显示间隔,设置成 0 强制显示所有标签。
                fontSize: 12,
                color: '#bbb',
                width: 130,
                overflow: 'break',//break 超宽换行 truncate 超宽显示...
                rich: {
                  line: {
                    lineHeight: 18
                  }
                },
                formatter: function (value) {
                  return `{line|${value}}`;
                }
              },

在这里插入图片描述
完整代码

		<view style="width: 100vw;" v-show="!showEmpty">
            <l-echart :key="chartKey" ref="chart"></l-echart>
            <view class="bottm-chart">我是有底线的</view>
          </view>
 async init(data, chartHeight) {
      this.$nextTick(() => {
        this.$refs.chart.init(echarts, chart => {
          let dataArr = [];
          let count = [];
          let yName = [];
          let showName = [];
          data.forEach((item, index) => {
            showName = item.entrustDealerName
              ? item.entrustDealerName + '(' + item.showName + ')'
              : item.showName
            yName.push(showName);
            count.push(item.orderWeight);
            dataArr.push(Math.round(parseFloat(item.orderMoney) / 10000 * 100) / 100);
          })
          const newArr = count.map(item => item * -1)
          let option = {
            backgroundColor: '#fff',
            title: {
              // text: '销售额与销售量对比图',
              left: 20,
              textStyle: {
                fontSize: 16,
                fontWeight: 500,
                color: '#414957'
              },
              top: 12
            },
            // tooltip: {
            //   trigger: 'axis',
            //   axisPointer: { // 坐标轴指示器,坐标轴触发有效
            //     type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
            //   },
            //   // triggerOn: 'mousemove',
            //   backgroundColor: 'rgba(50,50,50,0.7)',
            //   textStyle: {
            //     color: '#fff'
            //   },
            //   // extraCssText: 'width:100px;height:100px;',
            //   formatter: function (params) {
            //     var title = '';
            //     var str = '';
            //     for (var i of params) {
            //       title = i.name.replace(/\n/g, '') + '\n';
            //       if (i.data == 'null' || i.data == null) {
            //         str += i.seriesName + ':无数据' + '\n'
            //       } else {
            //         str += i.seriesName + ':' + Math.abs(i.data) + '\n'
            //       }
            //     }
            //     return title + str.slice(0, -1);
            //   },
            // },
            legend: {
              top: 20,
              right: 10,
              itemGap: 10,
              itemWidth: 10,
              itemHeight: 10,
              textStyle: {
                color: '#bbb'
              },
              data: ['销售量(吨)', '销售额(万元)']
            },
            color: ['#7291fd', '#44d39b'],
            grid: this.grid,
            xAxis: {
              show: false,
            },
            yAxis: [{
              type: 'category',
              inverse: true, //y轴坐标轴向下
              position: 'left', // 设置 y 轴的位置在左边
              offset: 65, // 设置 y 轴距离左边的偏移量
              axisLine: {
                show: false,
              },
              axisTick: {
                show: false
              },
              axisLabel: {
                show: true,
                interval: '0', //坐标轴刻度标签的显示间隔,设置成 0 强制显示所有标签。
                fontSize: 12,
                color: '#bbb',
                width: 130,
                overflow: 'break',//break 超宽换行 truncate 超宽显示...
                rich: {
                  line: {
                    lineHeight: 18
                  }
                },
                formatter: function (value) {
                  return `{line|${value}}`;
                }
              },
              data: yName,
            }],
            series: [{
              name: '销售量(吨)',
              type: 'bar',
              // barMaxWidth: 12,
              barWidth: 12, // 条形的宽度
              barCategoryGap: '20%', // 同一类目下,同一系列的柱子间距
              stack: '总量',
              emphasis: {
                // focus: 'series'
              },
              label: {
                show: true,
                // position: 'inside',
                normal: {
                  show: true,
                  position: 'left',
                  color: '#687284',
                  fontSize: '10',
                  formatter: function (params) {
                    return (params.data * -1).toFixed(3);
                  }
                },
              },
              data: newArr,
            }, {
              name: '销售额(万元)',
              type: 'bar',
              // barMaxWidth: 12,
              barWidth: 12,
              barCategoryGap: '20%', // 同一类目下,同一系列的柱子间距
              stack: '总量',
              emphasis: {
                // focus: 'series'
              },
              label: {
                normal: {
                  show: true,
                  position: 'right',
                  color: '#687284',
                  fontSize: '10',
                },

              },
              data: dataArr
            }]
          }
          chart.resize();
          chart.setOption(option);
        });
        this.setChartHeight(chartHeight)
      })
    },
     async getSaleStatistic(callback) {
      let data = {}
      this.showEmpty = true
      this.loading = true;
      this.isloading = true;
      uni.showLoading({
        title: '加载中...',
      })
      try {
        let result = await getSaleStatistic(data);
        if (result.codeState == 0) {
          let data = {
            type: 'error',
            message: result.message,
            icon: '',
          }
          this.loading = false;
          this.isloading = false;
          uni.hideLoading()
          return this.showToast(data);
        }
        let chartHeight = 300;
        let baseGrid = { ...this.grid }
        if (result.data.length > 0) {
          this.showEmpty = false
          if (result.data.length <= 4) {
            chartHeight = 300;
            // baseGrid.top = '70%'
            const top = 100 - 10 * (result.data.length + 1)
            baseGrid.top = top + '%'
          } else {
            chartHeight = result.data.length * 60;
            delete baseGrid.top;
          }
          this.grid = baseGrid
          /*
         grid: {
        // top: '60',
        left: '20%',
        right: '15%',
        bottom: '3%',
        containLabel: true,
      }
          */
        } else {
          this.showEmpty = true
        }
        await this.init(result.data, chartHeight);
        this.show = false;
        this.loading = false;
        this.isloading = false;
        uni.hideLoading()
      } catch (e) {
        console.error('获取数据失败:', error)
        this.loading = false;
        this.isloading = false
        uni.hideLoading()
        uni.showToast({
          title: '获取数据失败',
          icon: 'none'
        })
      }
      callback && callback()
    },
     async setChartHeight(chartHeight) {
      this.$refs.chart.resize({
        width: this.chartWidth,
        height: chartHeight,
      });
      this.$forceUpdate();
    },

在这里插入图片描述


http://www.kler.cn/a/290882.html

相关文章:

  • OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
  • python创建一个httpServer网页上传文件到httpServer
  • 如何将手机的画面和音频全部传输到电脑显示和使用电脑外放输出
  • 2025年入职/转行网络安全,该如何规划?网络安全职业规划
  • 2. CSS 中的单位
  • “大模型横扫千军”背后的大数据挖掘--浅谈MapReduce
  • LaTeX各符号表示方式(持续更新~)
  • 嵌入式学习(双向链表)
  • OPenCV结构分析与形状描述符(1)近似多边形轮廓顶点的函数approxPolyDP()的使用
  • 大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
  • flume 使用 exec 采集容器日志,转储磁盘
  • C++奇迹之旅:深度解析list的模拟实现
  • 【网络安全】服务基础第一阶段——第十一节:Windows系统管理基础----PKI技术与应用
  • c# json使用
  • 判断一个数是不是2的次方数
  • 碰撞检测 | 详解矩形AABB与OBB碰撞检测算法(附ROS C++可视化)
  • flask-解决跨域问题
  • Grafana仪表盘设计最佳实践:如何创建有效的监控面板
  • 【ShuQiHere】“初识人工智能:智能机器的基础入门”
  • 关于HarmonyOS的学习
  • 3.js - Water2不显示水波纹
  • k8s调度、污点、容忍、不可调度、排水、数据卷挂载
  • Flux【大模型】【写实模型】:人脸特美画质细腻意境优美的真境写实摄影FluxAura 大模型
  • 测试 UDP 端口可达性的方法
  • 图文解析保姆级教程:Postman专业接口测试工具的安装和基本使用
  • Linux 进程概念 进程状态 fock函数讲解