在d3.js中的点之间绘制线条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在d3.js中的点之间绘制线条相关的知识,希望对你有一定的参考价值。

我正在尝试使用d3.js在绘制点之间绘制线条。

示例geojson(FeatureCollection of 3 LineString):https://www.dropbox.com/s/hgkdvbnrgmb6kak/test.geojson?dl=0

完整的现有代码:https://www.dropbox.com/s/49820rs561vneti/test.html?dl=0

Code Chunk我遇到问题:

lines.append("g").selectAll("path")
  .data(d3.entries(data.features)).enter()
  .append("svg:path")
  .attr("d", path)

圆圈出现但不是将它们连接在一起的线。

任何帮助将不胜感激!

答案

错误1:

在你的topojson里面。

{
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        103.79971,
                        1.3013115
                    ],
                    [
                        103.8071998,
                        1.2932586
                    ]
                ]
            },
            "type": "Feature",//this is wrong
            "properties": {} 
        }

应该是:

{
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        103.79971,
                        1.3013115
                    ],
                    [
                        103.8071998,
                        1.2932586
                    ]
                ]
            },
            "properties": {}
        }

错误2:

  lines.append("g").selectAll("path")
    .data(d3.entries(data.features)).enter()
      .append("svg:path")
      .attr("d", path)
      .style("fill", "none")
      .style("stroke-width", "2px")

您不能创建这样的行,为了创建行,您必须使用图层并像这样添加该功能(注意功能来自您的test.geojson):

d3.json("test.geojson", function(data) {
  layer1.features(data.features);//adding the features to the layer
  map.add(layer1); 

完整的工作代码here

以上是关于在d3.js中的点之间绘制线条的主要内容,如果未能解决你的问题,请参考以下文章

d3.js 如何在条形图中添加线条

OpenGL 440 - 控制片段中的线条粗细。

Javascript / D3.js - 绘制大型数据集 - 提高 d3.js 绘制的 svg 图表中的缩放和平移速度

D3.js Sankey Diagrams中的链接可以是除了立方贝塞尔曲线之外的任何东西吗?

在数组中存储可变数量的点

AS3如何根据用户使用鼠标绘制线条的位置查找贝塞尔曲线的控制点