当前位置: 首页 > 知识库问答 >
问题:

echarts - Echarts 折线图如何自定义y轴刻度值并确保点与刻度对应?

艾令雪
2024-05-29

echarts折线图:现在我们的需求是y轴的刻度值自定义生成,但折线图的点和y轴不对应,请问应该怎么配置啊,这是我在折线图中的配置

const yData = [-30.3,-10.06, 10.18,30.43,50.67,70.91,91.15]const seriesData = [    {        "name": "123",        "type": "line",        "lineStyle": {            "width": 1        },        "symbol": "roundRect",        "symbolSize": 6,        "data": [           50,16,16,50,50,0        ]    }]option = {  tooltip: {      show: true  },  legend: {      selectedMode: true  },  animation: true,  dataZoom: {      type: 'inside'  },  grid: {      top: 40,      left: 50,      right: 40,      bottom: 40  },  xAxis: {    type: 'category',    data: ['02', '03', '04', '27', '28', '29'],    axisLine: {        show: false    },    axisTick: {        show: false    },    offset: 20  },  yAxis: {    min: -30.3,    max: 91.15,    axisLabel: {      formatter: function(value, index) {          return yData[index];      }    },    splitLine: {      lineStyle: {          type: 'dashed'      }    }  },  series: seriesData};

1716954483054.jpg

共有2个答案

马渊
2024-05-29

Emmmm……你可真的是大聪明。yAxis.axisLabel.formatter 居然是这样使的……

给你改了一下 �� Examples - Apache ECharts


怕链接失效以下是具体的实现代码,就是使用了 markline 去模拟了以下 yAxis。因为好像没办法指定自定义的非固定间距坐标轴。

const yData = [-30.3,-10.06, 10.18,30.43,50.67,70.91,91.15]const seriesData = [    {        "name": "123",        "type": "line",        "lineStyle": {            "width": 1        },        "symbol": "roundRect",        "symbolSize": 6,        "data": [           50,16,16,50,50,0        ]    }]option = {  tooltip: {      show: true  },  legend: {      selectedMode: true  },  animation: true,  dataZoom: {      type: 'inside'  },  grid: {      top: 40,      left: 50,      right: 40,      bottom: 40  },  xAxis: {    type: 'category',    data: ['02', '03', '04', '27', '28', '29'],    axisLine: {        show: false    },    axisTick: {        show: false    },    offset: 20  },  yAxis: {    show: false,    min: -30.3,    max: 91.15,  },  series: [    ...seriesData,    // 使用markline模拟y轴    {      type:"custom",      markLine: {        symbol: 'none',        label: {          position: 'start',        },        lineStyle: {          color: "#e0e6f1"        },        data: yData.map(num => ({         name: num,         yAxis: num        }))      }    }  ]};
颜文昌
2024-05-29

从您提供的配置和描述来看,您遇到的问题是自定义了yAxisaxisLabelformatter函数,使得y轴上的刻度值与您实际的数据值不一致。然而,这并不会影响折线图的点和y轴的对应关系,因为折线图的点实际上是按照seriesDatadata字段的数值来绘制的,而不是yAxis的刻度值。

如果您发现折线图的点和y轴不对应,那么问题可能出在别的地方。这里有几个可能的原因和解决方案:

  1. 检查数据匹配:确保seriesData中的data字段的数值与x轴的数据点一一对应,且每个数值都在yAxisminmax范围内。
  2. 清除缓存:如果您之前查看过图表并且浏览器有缓存,尝试清除缓存并重新加载页面。
  3. 检查其他配置:检查option中的其他配置,看是否有其他设置可能影响到折线图的显示。

如果您仍然无法解决问题,建议您提供更详细的描述或截图,以便更准确地定位问题。

另外,请注意,ECharts会根据seriesData中的data字段的数值自动在y轴上找到对应的位置绘制点,即使您自定义了yAxis的刻度值。因此,如果您的数据和刻度值不匹配,可能会导致视觉上的混淆,但并不会影响数据的实际位置。

 类似资料:
  • 问题内容: 如何在线性与线性图上仅在y轴上旋转次刻度? 当我使用该功能打开次刻度时,它们同时出现在x和y轴上。 问题答案: 没关系,我知道了。

  • 我正在学习D3,我可以看到我用这两件事得到了相同的可视化: 使用height属性: 或设置Y: 其中任何一个都是正确的,如果是,为什么?

  • 问题内容: 我有一个始终从x = 0开始的JFree XY折线图。然后,根据属性文件中用户定义的设置,应用程序将根据该数字(以分钟为单位)递增。 例如,x = 0开始时,用户定义的设置为5,因此刻度变为0、5、10、15、20…,或者用户设置为3,因此变为0、3、6、9、12…非常简单。 我遇到的问题是图表开始的方式。如果我从0开始,则0在图形的中间,而不是在左下角的-0.0000005,-0.0

  • 本文向大家介绍Android自定义RecyclerView实现不固定刻度的刻度尺,包括了Android自定义RecyclerView实现不固定刻度的刻度尺的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了自定义RecyclerView实现不固定刻度的刻度尺的具体代码,供大家参考,具体内容如下 ##不均匀刻度效果图 ##等比例刻度效果图 实现功能目前 1、实现类似日期/分类等大小不固定的

  • 我有一张图表,我已经知道我需要的刻度数。有3个是分组条形图。我在绞尽脑汁想怎么强迫它。现在它显示0到我的数据集中的任何数字,并根据需要自动缩放。 默认情况下,假设我使用数字来缩放,但在这种情况下,它是Y轴上的正、中性、负(字面意思是这些标签),它们是与X轴上的特定日期相关的数据点(有2个分组条标记为AM/PM)。 图表。js文档似乎没有解释如何在ticks配置的数字之外进行调整,我也不确定如何将其

  • 我需要移动轴中所有刻度线的标签(),使文本位于其自己的刻度线和下一个刻度线的中间。 我正在使用Roland的甘特图控件(经过一些修改)和Christian Schudt的DateAxis作为我的X轴。我的目标是根据Date值绘制甘特图(忽略时间;所有时间值都被截断)。 我的甘特图对每个任务都有一个“开始日期”和“结束日期”(即在图表上,它由一个条形图表示)。 考虑一下: 我有一个从2月1日开始的任