html绘制有纵轴和横轴的热力图代码
时间: 2024-05-16 21:13:40 浏览: 129
HTML本身不支持绘制图形,但是可以使用JavaScript和一些第三方库来实现。以下是一个使用D3.js绘制热力图的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Heatmap Example</title>
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>
<svg width="500" height="500"></svg>
<script>
// 数据
var data = [
[0, 0, 10],
[0, 1, 20],
[0, 2, 30],
[1, 0, 40],
[1, 1, 50],
[1, 2, 60],
[2, 0, 70],
[2, 1, 80],
[2, 2, 90]
];
// 定义颜色比例尺
var colorScale = d3.scaleLinear()
.domain([0, 100])
.range(["white", "red"]);
// 创建 SVG 元素
var svg = d3.select("svg");
// 绘制热力图
var heatmap = svg.selectAll(".heatmap")
.data(data)
.enter().append("rect")
.attr("class", "heatmap")
.attr("x", function(d) { return d[0] * 50; })
.attr("y", function(d) { return d[1] * 50; })
.attr("width", 50)
.attr("height", 50)
.style("fill", function(d) { return colorScale(d[2]); });
// 绘制纵轴标签
var yLabels = svg.selectAll(".ylabel")
.data(["A", "B", "C"])
.enter().append("text")
.attr("class", "ylabel")
.attr("x", -30)
.attr("y", function(d, i) { return i * 50 + 25; })
.text(function(d) { return d; });
// 绘制横轴标签
var xLabels = svg.selectAll(".xlabel")
.data(["1", "2", "3"])
.enter().append("text")
.attr("class", "xlabel")
.attr("x", function(d, i) { return i * 50 + 25; })
.attr("y", -10)
.text(function(d) { return d; });
</script>
</body>
</html>
```
这段代码会在页面上绘制一个 3x3 的热力图,纵轴标签为 A、B、C,横轴标签为 1、2、3。其中 `data` 数组用于存储数据,每个元素包含三个值:纵坐标、横坐标、数值。`colorScale` 变量定义了数值到颜色的映射关系,本例中使用线性比例尺,最小值为白色,最大值为红色。`heatmap` 变量定义了热力图的样式和位置,纵坐标和横坐标通过元素的 index 计算得到,颜色通过 `colorScale` 来确定。`yLabels` 和 `xLabels` 变量分别绘制了纵轴和横轴的标签。
阅读全文