echarts Y轴自定义区间 设置不等分的一些思路和例子

最近遇到了一个echarts 显示的问题,数据Y轴最高是10最低是0,但是0-1之间希望占Y轴比例的一半。下面分享一些实现的思路 (底部有最终代码)

下面是等分的图表 希望把 0-1 显示拉高

最终效果图

首先把Y轴刻度分为 24 因为 我的图表

0-0.1 需要显示占位Y轴的 3/24

0.1-0.2 为 2/24

0.2-0.3 1/24

0.3-0.4 1/24

0.5-0.6 1/24

0.6-0.7 1/24

0.7-0.8 1/24

0.8-1 1/24

1-2 需要显示占位Y轴的 3/24

2-3 为 2/24

3-4 1/24

4-5 1/24

5-6 1/24

6-7 1/24

7-8 1/24

8-9 1/24

9-10 1/24

Y 轴取消刻度线显示

使用series中的markLine 根据 比例显示刻度线

series: [
        {
            data: data,
            type: 'line',
            lineStyle: {
                zlevel: 5,
                width: 1
            },
            smooth: 0.5,
            z: 5,
            symbol: 'none',
            markLine: {
                label: {
                    show: false
                },
                symbol: 'none',
                z: 0,
                lineStyle: {
                    color: '#D9D9D9',
                    type: 'solid',
                    zlevel: 0
                },
                data: [
                    { name: '', xAxis: -5 },
                    { name: '', yAxis: 3 },
                    { name: '', yAxis: 5 },
                    { name: '', yAxis: 6 },
                    { name: '', yAxis: 7 },
                    { name: '', yAxis: 8 },
                    { name: '', yAxis: 9 },
                    { name: '', yAxis: 10 },
                    { name: '', yAxis: 11 },
                    { name: '', yAxis: 12 },
                    { name: '', yAxis: 15 },
                    { name: '', yAxis: 17 },
                    { name: '', yAxis: 18 },
                    { name: '', yAxis: 19 },
                    { name: '', yAxis: 20 },
                    { name: '', yAxis: 21 },
                    { name: '', yAxis: 22 },
                    { name: '', yAxis: 23 },
                    { name: '', yAxis: 24 }
                ]
            }
        }
    ]

Y轴刻度文本显示根据比例修改对应文本

yAxis: {
        type: 'value',
        min: 0,
        max: 24,
        interval: 1,
        axisLine: {
            show: false
        },
        axisTick: {
            show: false
        },
        splitLine: {
            show: false
        },
        axisLabel: {
            color: '#333',
            formatter: (value) => {
                if (value === 3) {
                    return 0.1
                } else if (value === 5) {
                    return 0.2
                } else if (value === 6) {
                    return 0.3
                } else if (value === 7) {
                    return 0.4
                } else if (value === 9) {
                    return 0.6
                } else if (value === 11) {
                    return 0.8
                } else if (value === 15) {
                    return 2
                } else if (value === 17) {
                    return 3
                } else if (value === 18) {
                    return 4
                } else if (value === 20) {
                    return 6
                } else if (value === 22) {
                    return 8
                }
                return '';
            }
        }
    },

关键点是 data 根据比例缩放数据

let data = [[-4.68, 0.05], [-4.23, 0.1], [-3, 0.2], [-2.5, 0.15], [-2, 0.3], [-1, 0.35], [-0, 2.5]]
    data.forEach((item) => {
        if (item[1] <= 0.1) {
            // 根据每个区间的缩放计算值 如 3 的刻度缩放为 0.1 即  3 / 0.1 = 30 所以值需要 * 30
            // 如 0.05 * 30 = 1.5
            item[1] = item[1] * 30
        } else if (item[1] <= 0.2) {
            // 后续则需要减去 上次计算的区间比例 再算当前比例
            // 我的第二个区间比例是 0.1-0.2 2/24
            let num = item[1] - 0.1
            item[1] = 0.1 * 30 + num * 20
        } else if (item[1] <= 0.3) {
            let num = item[1] - 0.2
            item[1] = 0.1 * 30 + 0.1 * 20 + num * 10
        } else if (item[1] <= 0.4) {
            let num = item[1] - 0.3
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + num * 10
        } else if (item[1] <= 0.5) {
            let num = item[1] - 0.4
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + num * 10
        } else if (item[1] <= 0.6) {
            let num = item[1] - 0.5
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + num * 10
        } else if (item[1] <= 0.7) {
            let num = item[1] - 0.6
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + num * 10
        } else if (item[1] <= 0.8) {
            let num = item[1] - 0.6
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + num * 10
        } else if (item[1] <= 1) {
            let num = item[1] - 0.8
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + num * 5
        } else if (item[1] <= 2) {
            let num = item[1] - 1
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + num * 3
        } else if (item[1] <= 3) {
            let num = item[1] - 2
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + num * 2
        } else if (item[1] <= 4) {
            let num = item[1] - 3
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + num
        } else if (item[1] <= 5) {
            let num = item[1] - 4
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + num
        } else if (item[1] <= 6) {
            let num = item[1] - 5
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + 1 + num
        } else if (item[1] <= 7) {
            let num = item[1] - 6
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + 1 + 1 + num
        } else if (item[1] <= 8) {
            let num = item[1] - 7
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + 1 + 1 + 1 + num
        } else if (item[1] <= 9) {
            let num = item[1] - 8
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + 1 + 1 + 1 + 1 + num
        } else if (item[1] <= 10) {
            let num = item[1] - 9
            item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + 0.2 * 5 + 1 * 3 + 1 * 2 + 1 + 1 + 1 + 1 + 1 + 1 + num
        }
    })

附源代码

import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;

let data = [
  [-4.68, 0.05],
  [-4.23, 0.1],
  [-3, 0.2],
  [-2.5, 0.15],
  [-2, 0.3],
  [-1, 0.35],
  [-0, 2.5]
];
data.forEach((item) => {
  if (item[1] <= 0.1) {
    // 根据每个区间的缩放计算值 如 3 的刻度缩放为 0.1 即  3 / 0.1 = 30 所以值需要 * 30
    item[1] = item[1] * 30;
  } else if (item[1] <= 0.2) {
    let num = item[1] - 0.1;
    item[1] = 0.1 * 30 + num * 20;
  } else if (item[1] <= 0.3) {
    let num = item[1] - 0.2;
    item[1] = 0.1 * 30 + 0.1 * 20 + num * 10;
  } else if (item[1] <= 0.4) {
    let num = item[1] - 0.3;
    item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + num * 10;
  } else if (item[1] <= 0.5) {
    let num = item[1] - 0.4;
    item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + num * 10;
  } else if (item[1] <= 0.6) {
    let num = item[1] - 0.5;
    item[1] = 0.1 * 30 + 0.1 * 20 + 0.1 * 10 + 0.1 * 10 + 0.1 * 10 + num * 10;
  } else if (item[1] <= 0.7) {
    let num = item[1] - 0.6;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      num * 10;
  } else if (item[1] <= 0.8) {
    let num = item[1] - 0.6;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      num * 10;
  } else if (item[1] <= 1) {
    let num = item[1] - 0.8;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      num * 5;
  } else if (item[1] <= 2) {
    let num = item[1] - 1;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      num * 3;
  } else if (item[1] <= 3) {
    let num = item[1] - 2;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      num * 2;
  } else if (item[1] <= 4) {
    let num = item[1] - 3;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      num;
  } else if (item[1] <= 5) {
    let num = item[1] - 4;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      num;
  } else if (item[1] <= 6) {
    let num = item[1] - 5;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      1 +
      num;
  } else if (item[1] <= 7) {
    let num = item[1] - 6;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      1 +
      1 +
      num;
  } else if (item[1] <= 8) {
    let num = item[1] - 7;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      1 +
      1 +
      1 +
      num;
  } else if (item[1] <= 9) {
    let num = item[1] - 8;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      1 +
      1 +
      1 +
      1 +
      num;
  } else if (item[1] <= 10) {
    let num = item[1] - 9;
    item[1] =
      0.1 * 30 +
      0.1 * 20 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.1 * 10 +
      0.2 * 5 +
      1 * 3 +
      1 * 2 +
      1 +
      1 +
      1 +
      1 +
      1 +
      1 +
      num;
  }
});

option = {
  graphic: {
    elements: [
      {
        type: 'text',
        left: '9px',
        top: '16px',
        style: {
          text: '10',
          textAlign: 'center',
          fill: '#333', // 文本颜色
          fontSize: 12
        }
      },
      {
        type: 'text',
        right: '0px',
        bottom: '10px',
        style: {
          text: 'x',
          textAlign: 'center',
          fill: '#333', // 文本颜色
          fontSize: 12
        }
      }
    ]
  },
  grid: {
    left: '30px',
    top: '30px',
    right: '30px',
    bottom: '30px'
  },
  title: {
    text: 'title',
    left: 'center',
    top: '10px',
    textStyle: {
      fontSize: 12,
      fontWeight: 400
    }
  },
  xAxis: {
    type: 'value',
    min: -5,
    max: 11,
    interval: 1,
    axisTick: {
      show: false
    },
    axisLabel: {
      color: '#333',
      formatter: (value) => {
        return value % 2 ? value : '';
      }
    },
    axisLine: {
      lineStyle: {
        color: '#D9D9D9'
      }
    }
  },
  yAxis: {
    type: 'value',
    min: 0,
    max: 24,
    interval: 1,
    axisLine: {
      show: false
    },
    axisTick: {
      show: false
    },
    splitLine: {
      show: false
    },
    axisLabel: {
      color: '#333',
      formatter: (value) => {
        if (value === 3) {
          return 0.1;
        } else if (value === 5) {
          return 0.2;
        } else if (value === 6) {
          return 0.3;
        } else if (value === 7) {
          return 0.4;
        } else if (value === 9) {
          return 0.6;
        } else if (value === 11) {
          return 0.8;
        } else if (value === 15) {
          return 2;
        } else if (value === 17) {
          return 3;
        } else if (value === 18) {
          return 4;
        } else if (value === 20) {
          return 6;
        } else if (value === 22) {
          return 8;
        }
        return '';
      }
    }
  },
  series: [
    {
      data: data,
      type: 'line',
      lineStyle: {
        zlevel: 5,
        width: 1
      },
      smooth: 0.5,
      z: 5,
      symbol: 'none',
      markLine: {
        label: {
          show: false
        },
        symbol: 'none',
        z: 0,
        lineStyle: {
          color: '#D9D9D9',
          type: 'solid',
          zlevel: 0
        },
        data: [
          { name: '', xAxis: -5 },
          { name: '', yAxis: 3 },
          { name: '', yAxis: 5 },
          { name: '', yAxis: 6 },
          { name: '', yAxis: 7 },
          { name: '', yAxis: 8 },
          { name: '', yAxis: 9 },
          { name: '', yAxis: 10 },
          { name: '', yAxis: 11 },
          { name: '', yAxis: 12 },
          { name: '', yAxis: 15 },
          { name: '', yAxis: 17 },
          { name: '', yAxis: 18 },
          { name: '', yAxis: 19 },
          { name: '', yAxis: 20 },
          { name: '', yAxis: 21 },
          { name: '', yAxis: 22 },
          { name: '', yAxis: 23 },
          { name: '', yAxis: 24 }
        ]
      }
    }
  ]
};

option && myChart.setOption(option);

新人第一写文章文字表达可能不太清晰,希望能帮助到需要的人

### SQL Server 安装教程 SQL Server 是由 Microsoft 开发的关系型数据库管理系统 (RDBMS),广泛应用于企业级应用中。以下是 Windows 环境下 SQL Server 的详细安装步骤: #### 一、准备工作 1. **硬件软件需求检查** - 内存:建议至少8GB以上,视业务量而定。 - CPU:支持64位处理器架构。 - 操作系统:Windows Server 或者较新版本的 Windows。 2. **下载安装包** 访问 [Microsoft 官方网站](https://www.microsoft.com/en-us/sql-server/sql-server-downloads) 下载适合您环境的 SQL Server 版本(如 Express、Standard 或 Enterprise),并选择合适的语言版本。 #### 二、安装过程 ##### 步骤 1:运行安装程序 双击已下载好的 .exe 文件启动 SQL Server Installation Center 向导界面。 ##### 步骤 2:选择“全新 SQL Server 单独安装” 此选项用于首次安装或添加功能到现有实例上;如果需要修复当前实例,则应选“升级”。 ##### 步骤 3:接受许可条款,并点击下一步继续。 ##### 步骤 4:产品密钥输入(仅限某些版本) 对于标准版及更高版本通常会要求输入有效的许可证密钥信息,Express 版免费提供基本特性则无需购买授权即可使用。 ##### 步骤 5:特征选择 这里可以勾选出想要安装的功能模块,默认情况下已经预选择了常用组件。可以根据实际项目需求自定义安装内容,比如是否包含 Reporting Services 报表服务等高级工具集。 ##### 步骤 6:配置服务器设置 指定实例名称、身份验证模式服务账户权限等内容: - 实例名决定了该 SQL Server 实例在网络上的标识符; - 身份认证可以选择混合模式(即同时允许 SQL Windows 登录)或是纯粹基于 Windows 用户的身份验证方式; - 设置好 sa 帐户密码以便后续管理操作时登录使用。(注意安全性) ##### 步骤 7:规则检测 这一步主要是为了确保所有必需条件都满足再继续下去。如果有符合项,按照提示解决后再尝试通过校验。 ##### 步骤 8:开始复制文件&安装准备... 等待进度条完成整个部署流程... ##### 步骤 9:结束向导 当显示"成功完成了全部所需任务”字样之后关闭对话框就表示本次安装顺利完成啦! 最后别忘了重启计算机使得刚刚做的更改生效哦~ #### 三、连接测试与简单入门命令学习 完成后打开 SSMS(SQL Server Management Studio), 使用刚才设定好的凭据登陆试一下能否正常访问吧~ 推荐初学者们从 SELECT 查询语句学起,熟悉 T-SQL 语法结构有助于更快地上手实践工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值