黑狐家游戏

数据可视化大屏幕,数据可视化大屏代码

欧气 4 0
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>数据可视化大屏</title>
  <style>
    body {
      margin: 0;
      padding: 0;
      font-family: Arial, sans-serif;
    }
    #visualization {
      width: 100%;
      height: 100vh;
    }
  </style>
</head>
<body>
  <div id="visualization"></div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.15.0/d3.min.js"></script>
  <script>
    // 数据准备
    var data = [
      { category: "A", value: 25 },
      { category: "B", value: 30 },
      { category: "C", value: 15 },
      { category: "D", value: 35 },
      { category: "E", value: 20 }
    ];
    // 创建可视化容器
    var svg = d3.select("#visualization")
     .append("svg")
     .attr("width", "100%")
     .attr("height", "100%");
    // 设置颜色 scale
    var colorScale = d3.scaleOrdinal()
     .domain(d3.range(data.length))
     .range(["#FF6384", "#36A2EB", "#FFCE56", "#90CAF9", "#7CB342"]);
    // 绘制饼图
    var pie = d3.pie()
     .value(function(d) { return d.value; })
     .sort(null);
    var arcs = svg.selectAll("arc")
     .data(pie(data))
     .enter()
     .append("g")
     .attr("transform", "translate(" + svg.attr("width") / 2 + "," + svg.attr("height") / 2 + ")");
    arcs.append("path")
     .attr("d", d3.arc()
       .innerRadius(0)
       .outerRadius(svg.attr("width") / 2 - 20))
     .attr("fill", function(d, i) { return colorScale(i); });
    arcs.append("text")
     .attr("transform", function(d) {
        var angle = d3.interpolateAngle(d.startAngle, d.endAngle)(0.5);
        var x = Math.sin(angle) * (svg.attr("width") / 2 - 50);
        var y = Math.cos(angle) * (svg.attr("width") / 2 - 50);
        return "translate(" + x + "," + y + ")";
      })
     .attr("dy", "0.35em")
     .text(function(d, i) { return data[i].category + ": " + data[i].value + "%"; });
    // 添加标题
    svg.append("text")
     .attr("x", svg.attr("width") / 2)
     .attr("y", svg.attr("height") / 2 - 50)
     .attr("text-anchor", "middle")
     .style("font-size", "24px")
     .style("font-weight", "bold")
     .text("数据可视化大屏");
  </script>
</body>
</html>

上述代码实现了一个简单的数据可视化大屏,展示了一个饼图,其中包含了不同类别数据的占比情况,以下是对代码的详细解释:

1、:

- 使用 HTML 的<title> 标签设置页面标题为"数据可视化大屏"。

2、数据准备

- 定义了一个包含类别和对应值的数组data

3、可视化容器创建

- 使用 D3.js 选择器获取页面中的<div> 元素,并将其作为可视化容器。

- 设置容器的宽度和高度为 100%,以适应整个页面。

4、颜色 scale 设置

- 使用 D3.js 的scaleOrdinal() 函数创建一个颜色 scale,根据数据的索引分配不同的颜色。

5、饼图绘制

- 使用 D3.js 的pie() 函数将数据转换为弧形数据。

- 使用选择器arcs 选择所有的弧形元素,并为每个弧形元素绘制路径和添加文本标签。

- 路径的绘制使用d3.arc() 函数,并根据弧形数据的起始角度和结束角度计算弧形的形状。

- 文本标签的位置根据弧形的中心和角度进行计算,并显示类别和占比信息。

6、标题添加

- 使用 D3.js 的append() 函数在可视化容器的中心位置添加一个文本元素,作为标题。

- 设置标题的样式,包括字体大小、字体粗细等。

通过以上代码,我们可以在浏览器中看到一个数据可视化大屏,其中包含了一个饼图和一个标题,饼图展示了不同类别数据的占比情况,标题显示了页面的主题,你可以根据自己的需求修改数据和样式,以满足不同的可视化需求。

标签: #数据可视化 #大屏幕 #代码 #数据

黑狐家游戏
  • 评论列表

留言评论