具有多个比例/Y轴的图表是一种数据可视化形式,它在一个图表中展示多个数据系列,每个系列可以有自己的Y轴比例。这种图表类型常用于显示不同量级或不同单位的数据,以便于比较和分析。
以下是一个简单的双Y轴图表示例代码:
// 引入D3.js库
<script src="https://d3js.org/d3.v7.min.js"></script>
// 数据集
const data = [
{ date: '2023-01-01', value1: 100, value2: 5000 },
{ date: '2023-01-02', value1: 150, value2: 4500 },
// ...更多数据
];
// 设置SVG容器
const svg = d3.select('svg');
const width = +svg.attr('width');
const height = +svg.attr('height');
// 创建比例尺
const x = d3.scaleTime()
.domain(d3.extent(data, d => new Date(d.date)))
.range([50, width - 50]);
const y1 = d3.scaleLinear()
.domain([0, d3.max(data, d => d.value1)])
.range([height - 50, 50]);
const y2 = d3.scaleLinear()
.domain([0, d3.max(data, d => d.value2)])
.range([height - 50, 50]);
// 创建轴
const xAxis = d3.axisBottom(x);
const yAxis1 = d3.axisLeft(y1);
const yAxis2 = d3.axisRight(y2);
// 添加轴到SVG
svg.append('g')
.attr('transform', `translate(0,${height - 50})`)
.call(xAxis);
svg.append('g')
.attr('transform', 'translate(50,0)')
.call(yAxis1);
svg.append('g')
.attr('transform', `translate(${width - 50},0)`)
.call(yAxis2);
// 绘制数据线
const line1 = d3.line()
.x(d => x(new Date(d.date)))
.y(d => y1(d.value1));
const line2 = d3.line()
.x(d => x(new Date(d.date)))
.y(d => y2(d.value2));
svg.append('path')
.datum(data)
.attr('fill', 'none')
.attr('stroke', 'steelblue')
.attr('stroke-width', 1.5)
.attr('d', line1);
svg.append('path')
.datum(data)
.attr('fill', 'none')
.attr('stroke', 'orange')
.attr('stroke-width', 1.5)
.attr('d', line2);
问题:图表中的数据系列重叠或不清晰。 原因:可能是由于Y轴比例设置不当或数据点过于密集。 解决方法:
通过以上方法,可以有效提升多比例/Y轴图表的可读性和实用性。
腾讯技术开放日
技术创作101训练营
GAME-TECH
GAME-TECH
腾讯云“智能+互联网TechDay”
Techo Day 第二期
云+社区技术沙龙[第12期]
腾讯云“智能+互联网TechDay”华北专场
云+社区技术沙龙[第27期]
云+社区技术沙龙 [第30期]
领取专属 10元无门槛券
手把手带您无忧上云