。will, 2024-05-03 16:38 采纳率: 0%
浏览 5
已结题

有了解d3和topogram.js库的吗?有偿请教

基于D3和topogram Js库生成cartogram,程序运行生成的地图没有变形

  • 写回答

17条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-03 16:38
    关注

    引自免费微信小程序:皆我百晓生

    Topogram.js是一个用于创建等值区域图(也称为cartogram)的JavaScript库,它基于D3.js。Cartogram是一种地图,其中地理区域的形状被扭曲以反映其他变量,例如人口或经济数据。如果你在使用topogram.js时遇到地图没有变形的问题,可能是因为配置不正确或者数据没有正确关联到地理形状。

    以下是一个基本的示例,展示如何使用topogram.js创建一个简单的cartogram:

    首先,确保你已经安装了D3.jstopogram.js。你可以通过npm安装它们:

    npm install d3 topogram
    

    然后,在HTML文件中引入这些库:

    <script src="https://d3js.org/d3.v6.min.js"></script>
    <script src="node_modules/topogram/topogram.min.js"></script>
    

    接下来,创建一个SVG元素来容纳你的cartogram,并准备你的数据。这里是一个简单的例子:

    <body>
      <svg id="cartogram" width="960" height="600"></svg>
    </body>
    

    现在,使用D3.js加载数据并创建cartogram:

    var svg = d3.select("#cartogram");
    
    // 假设你有一个包含地理信息和值的数据数组
    var data = [
      { name: "state1", value: 100 },
      { name: "state2", value: 200 },
      // 更多状态...
    ];
    
    // 加载地理数据,这里假设是 topojson 形式
    d3.json("path/to/your/topojson/file.json").then(function(geoData) {
      var projection = topogram.cartogram()
        .datum(geoData)
        .regionKey(function(d) { return d.properties.name; }) // 根据你的数据结构调整
        .value(function(d) { return data.find(e => e.name === d.properties.name).value; });
    
      var paths = svg.selectAll("path")
        .data(projection.path());
    
      paths.enter().append("path")
        .attr("d", projection.path())
        .attr("fill", "steelblue");
    
      // 更新地图形状以反映数据
      projection.update(data);
    
      // 更新路径以反映新的形状
      paths.attr("d", projection.path());
    });
    

    这个例子假设你有一个包含地理信息(如州名)和对应值的数组,以及一个.topojson文件,其中包含了地理边界信息。你需要根据你的实际数据和文件路径进行调整。

    如果地图没有变形,检查以下几点:

    1. 确保regionKey函数正确匹配了数据和地理数据中的键。
    2. value函数是否正确地从数据数组中提取值。
    3. 地理数据是否正确加载,并且与你的数据相匹配。
    4. projection.update()是否在正确的数据上调用。

    如果问题仍然存在,提供更具体的数据和错误描述,以便我能进一步协助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月5日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误