Amcharts 4:如何将数据标记(Bullet)放置在坐标轴起点
如何将水平条形图的数据标记固定在坐标轴起点
直接操作标记元素的
transform属性
如果你用D3这类可视化库,创建标记时可通过比例尺获取X轴起点的像素坐标,手动设置transform的translateX值:// 假设xScale是你的X轴比例尺 const axisStartX = xScale(0); // 把数据域的0值转成画布上的像素坐标 svg.selectAll('.bullet-marker') .attr('transform', d => `translate(${axisStartX}, ${yScale(d.category)})`);这种方式能让标记随图表缩放自动保持在X轴起点,不会受绝对值限制。
直接用比例尺定位标记,替代
x/dx
放弃用x属性设置标记位置,直接以X轴起点的像素值作为标记的基准X坐标:svg.append('circle') .attr('class', 'bullet-marker') .attr('cx', xScale(0)) // 直接绑定X轴起点的像素值 .attr('cy', d => yScale(d.category)) .attr('r', 4);这种方式无需依赖
transform,完全通过比例尺的计算结果定位,适配图表的动态变化。通过轴对象获取起点范围值
若X轴是用D3的axisBottom/axisTop创建的,可直接从比例尺的范围属性中提取起点像素值:const axisRangeStart = xScale.range()[0]; // 获取X轴在画布上的起始像素位置 svg.selectAll('.bullet-marker') .attr('transform', d => `translate(${axisRangeStart}, ${yScale(d.category)})`);此方法不依赖数据域的具体值,通用性更强。
内容的提问来源于stack exchange,提问作者Eduardo
相关产品推荐
相关产品推荐

