ECharts 自定义系列 profile 坐标转置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECharts 自定义系列 profile 坐标转置相关的知识,希望对你有一定的参考价值。

参考技术A [TOC]

ECharts 自定义系列 profile - ECharts

希望将 ECharts 自定义系列官方提供的 profile 图表,横纵坐标进行转换。

encode 的作用是 映射 。

简单的说,就是从一个二维数组中,选择需要映射那几列数据到图表中。本例中,encode 从 data.value 中映射数据。

数据映射,有两层意思。

画布的尺寸是有限的,也是是随界面布局的变化,时时相对发生变化。

图形(柱状图,折线图,饼图等等)在画布上的比例(相对尺寸)是一定的,那么一个具体的数值,在展现在图形上时,就需要按照一定的比例进行映射。

以本例为例,

画布大概只有 400*600 px

x 轴,只有3个数据 (0,1,2)
y 轴,上的数据很多,是基于时间戳用随机数计算出来的(例如:1510975537362),科学计数法基本上都在 10e12 这个范围。

显然,不可能直接把数值 转化为像素,因此就需要知道 x 和 y 轴的 最大值 和
最小值 然后把每一个具体的值映射为屏幕中的像素值。

上面 encode 中,x 只选择 data.value 中的第一列,也就是范围 0-2;y 轴选择 data.value 中的第二、三列(即开始时间和结束时间范围)

在数值到画布坐标映射时,调用 api.coord([x, y]) 这个方法实现。本例中详见 series-custom.renderItem 的说明

本例中,data 是由 echarts.util.each(categories, function (category, index) 生成的。data 的完整结构如下:

xAxis 和 yAxis 的作用是绘制坐标轴。

在转置的时候,坐标轴需要配套转置。

renderItem 是数据映射过程中的关键,其作用好比 excel 中的数据透视表。不同的是,renderItem 需要把图形是什么样子的,定义清楚。

在本例中,我们需要对坐标轴进行转置,因此,在一开始的时候,修改了 series-custom.encode 中的映射行为。坐标轴对应的数据发生了修改,因此,在映射具体图形坐标的时候,需要配套修改。

这个方法用来获取一组坐标在画布中的坐标轴上对应的长度。这就好比获取地图比例尺的长度。返回值为一个数组,第一个元素对应x轴,第二个元素对应y轴

本例中,我们想知道转置以后,x轴一个单位的长度。

echarts自定义提示框数据

  tooltip: {
    trigger: "axis",
    axisPointer: {
    // 坐标轴指示器,坐标轴触发有效
    type: "line" // 默认为直线,可选为:‘line‘ | ‘shadow‘
    },
    formatter: function(params) {
    var texts = "";
    for (var i = 0; i < params.length; i++) {
      if (i == 0) {
        texts += params[i].name + "<br>";
        }
    texts +=
    params[i].seriesName + ": " + params[i].value + "<br>";
    }
  return texts;
  }
}


















以上是关于ECharts 自定义系列 profile 坐标转置的主要内容,如果未能解决你的问题,请参考以下文章

echarts自定义折线图横坐标时间间隔踩坑总结

echarts自定义提示框数据

echarts自定义提示框数据

可自定义配置的图表(element-ui+echarts4)

求助大神,怎么去掉echarts中y轴,但是保留y轴坐标值和网格线

echarts地图设置随内容的多少而变化颜色