echarts 折线图上标记独立坐标点

实现下图所示功能:
在多条折线图中,给定一个独立的点坐标,在图上进行显示(图一),点击该坐标点显示该坐标的位置信息(图二)
图一
图二

具体实现代码:
html:

<div id="main" style="width: 600px;height:400px;"></div>

js

var myChart = echarts.init(document.getElementById('main'));
		let option = {
			tooltip: {
				trigger: 'axis'
			},
			legend: {
				data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
			},
			grid: {
				left: '3%',
				right: '4%',
				bottom: '3%',
				top: '150px',
				containLabel: true
			},
			toolbox: {
				feature: {
					saveAsImage: {}
				}
			},
			xAxis: {
				type: 'category',
				boundaryGap: false,
				data: [40, 80, 120, 160, 200, 240, 280]
			},
			yAxis: {
				type: 'value'
			},
			series: [{
					name: '邮件营销',
					type: 'line',
					data: [120, 132, 101, 134, 90, 230, 210],
					markPoint: {
						symbol: 'circle',
						symbolSize: 20,
						data: [{
							name: '某个坐标',
							yAxis: '1200',
							xAxis: '180',
							value: '', //1200,200
							_value: '1200, 180',
							label: {
								show: true,
								position: 'top',
								color: "red"
							}
						}]
					},
				},
				{
					name: '联盟广告',
					type: 'line',
					data: [220, 182, 191, 234, 290, 330, 310]
				},
				{
					name: '视频广告',
					type: 'line',
					data: [150, 232, 201, 154, 190, 330, 410]
				},
				{
					name: '直接访问',
					type: 'line',
					data: [320, 332, 301, 334, 390, 330, 320]
				},
				{
					name: '搜索引擎',
					type: 'line',
					data: [820, 932, 901, 934, 1290, 1330, 1320]
				}
			]
		};
		// 使用刚指定的配置项和数据显示图表。
		myChart.setOption(option);

		myChart.on('click', function (param) {
			//param.name x轴值,param.data y轴值
			option.series[0].markPoint.data[0].value = param.data._value.toString();
			option.series[0].markPoint.data[0].label = {
				position: 'top'
			}
			myChart.setOption(option);
		})

重点

1、添加坐标点击事件用

myChart.on('click', function (param) {})

2、以上代码中markPoint中的xAxis值是x轴的具体数值或者下标,如果不是x轴标记的刻度(具体数值)的话,则不能正常显示,如果换算成非整数的下标,则按照四舍五入的原则就近进行显示(这是有问题的)。所以为了可以正常显示坐标点,使用下面的方式进行双坐标轴都是数值的展示

图三

双坐标数值展示具体代码如下

:此时可以显示任意坐标点而不会说非x轴的值不显示或者四舍五入的显示点的位置

option = {
  tooltip: {
      trigger: "axis",
  },
  legend: {
      data: ['测试'],
  },
  xAxis: {
    boundaryGap: false,
  },
  grid: {
      left: "0.5%",
      right: "0.5%",
      bottom: "10%",
      top: '4%',
      containLabel: true,
  },
  yAxis: {},
  series: [
    {
      name:'测试',
      data: [["0.0", "1.0"],["1.0", "1.116"],["3.0", "1.233"], ["3.5", "1.349"],["4.0", "1.466"], ["5.0", "1.582"],["6.0", "1.69"]],
      type: 'line',
      markPoint:{
        symbol: 'circle' ,
        symbolSize:20,
        data: [{
            yAxis:1.3,
            xAxis:2.2,
        }]
      }
    }
  ]
};

这样可以给定具体的x、y的值进行正常显示。

### ECharts 折线图 添加和配置标记点 在ECharts中,可以通过`markPoint`属性来添加和自定义折线图中的标记点。此功能允许开发者突出显示特定的数据点或位置。 #### 基本语法结构 为了向图表添加标记点,在数据系列(series)对象内指定`markPoint`选项即可。下面是一个简单的例子说明如何操作: ```javascript option = { xAxis: {}, yAxis: {}, series: [{ name: '示例', type: 'line', // 设置图表类型为折线图 data: [120, 132, 101, 134, 90, 230, 210], markPoint: { // 开始配置标记点 data: [ {type: 'max', name: '最大值'}, // 自动寻找并标注最大值 {type: 'min', name: '最小值'} // 同样适用于最小值 ] } }] }; ``` 上述代码片段展示了最基础的方式去创建两个特殊类型的标记——最大值与最小值[^1]。 #### 高级定制化标记点 除了自动检测极值外,还可以手动设定具体的坐标作为标记的位置,并且能够进一步美化这些标记样式以及关联提示信息。 ```javascript markPoint: { symbolSize: function (value){ return value[2]*2; // 动态调整图标大小 }, label: { normal: { show: true, position: 'inside' } }, itemStyle:{ color:'#FF0000'// 更改默认颜色 }, data:[ {"coord":[new Date('2023-08-07').getTime(), 150], "name":"自定义事件", "value":150}, {"xAxis":3,"yAxis":134,"symbol":"pin","symbolSize":50} ] } ``` 这段脚本不仅指定了确切坐标的标记点,还通过回调函数动态改变了某些视觉特性,如尺寸、标签位置等;同时也支持更改图形形状(`symbol`)及其对应的宽度高度(`symbolSize`)。 #### 用户交互:点击添加新标记 为了让用户体验更加友好,可以在用户单击某个未标记过的节点时弹出对话框让用户输入描述文字,之后保存该条目到数据库或者本地存储以便下次加载页面时重现相同的标记效果[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值