D3js - 使用 d3.json 从“JSON 数据”输入绘制折线图

2024-03-06

我最近开始学习 D3.js 并遇到了一些问题.. 这是我到目前为止所尝试过的:

这是我的JS :

    d3.json("../js/sample2.json", function(data) {
    var canvas = d3.select("body").append("svg")
            .attr("width", 500)
            .attr("height", 500)
            .attr("border", "black")

    var group = canvas.append("g")
            .attr("transform", "translate(100,10)")

    var line = d3.svg.line()
            .x(function(d, i) {
                return data[0].position[i];
            })
            .y(function(d, i) {
                return data[1].position[i];
            });

    var line1 = d3.svg.line()
            .x(function(d, i) {
                return data[2].position[i];
            })
            .y(function(d, i) {
                return data[3].position[i];
            });

    var j = 0;
    group.selectAll("path")
            .data(data).enter()
            .append("path")
//    Have to provide where exaclty the line array is ! (line(array)) 
            .attr("d", line(data[j].position))
            .attr("fill", "none")
            .attr("stroke", "green")
            .attr("stroke-width", 3);

    var group2 = group.append("g")
            .attr("transform", "translate(100,10)")
    group2.selectAll("path")
            .data(data).enter()
            .append("path")
//    Have to provide where exaclty the line array is ! (line(array)) 
            .attr("d", line1(data[j].position))
            .attr("fill", "none")
            .attr("stroke", "red")
            .attr("stroke-width", 3);
});

这是我的 JSON 文件:

   [ {"name": "x1", 
      "position":[40,60,80,100,200]
     },

     {"name": "y1", 
      "position":[70,190,220,160,240]},

     {"name": "x2", 
      "position":[40,60,80,100,200]
     },

     {"name": "y2", 
      "position":[20,90,20,60,40]}
]

I want the line to be displayed from the data that is retrieved from the JSON file. I actually got the output, This is my current output that am receiving: enter image description here

但问题是,我希望这更加动态。 例如如果还有更多数据在 JSON 中。

JSON 可以来自 x1,y1 到 xn,yn...(类似于上面 JSON 中的格式)

[ {"name": "x1", 
      "position":[40,60,80,100,200]
     },
 {"name": "y1", 
  "position":[70,190,220,160,240]
  },

 {"name": "x2", 
  "position":[40,60,80,100,200]
 },

 {"name": "y2", 
  "position":[20,90,20,60,40]}
.
.
.
.    


{"name": "xn", 
  "position":[40,60,80,100,200]
 },

 {"name": "yn", 
  "position":[20,90,20,60,40]}]

所以我与此相关的问题是:

  1. 这是怎么做到的dynamic(即:无论 JSON 中的数据量有多少,它都应该反映在具有所需图形的图表上)
  2. Is the JSON 的数据格式使用以下命令输入到 D3jsD3.json会有问题吗? (或者 D3.json 所需的格式到底是什么?是否严格?)

让你的json数据结构是这样的

[
 [
  {
     "x":40,
     "y":70
  },
  {
     "x":60,
     "y":190
  },
  {
     "x":80,
     "y":220
  },
  {
     "x":100,
     "y":160
  },
  {
     "x":200,
     "y":240
  }
 ],
 [
  {
     "x":40,
     "y":20
  },
  {
     "x":60,
     "y":90
  },
  {
     "x":80,
     "y":20
  },
  {
     "x":100,
     "y":60
  },
  {
     "x":200,
     "y":40
  }
 ]
]

Code

d3.json("data.json", function(data) {
   var canvas = d3.select("body").append("svg")
        .attr("width", 500)
        .attr("height", 500)
        .attr("border", "black")

   var group = canvas.append("g")
        .attr("transform", "translate(100,10)")

   var line = d3.svg.line()
        .x(function(d, i) {
            return d.x;
        })
        .y(function(d, i) {
            return d.y;
        }); 

   group.selectAll("path")
        .data(data).enter()
        .append("path")
        .attr("d", function(d){ return line(d) })
        .attr("fill", "none")
        .attr("stroke", "green")
        .attr("stroke-width", 3);
});

这是创建多折线图的正确方法。无论您从 json 获得什么数据格式,都可以使用 Javascript 数组函数将其转换为所需的格式。您还可以使用 Underscore.js 来轻松处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D3js - 使用 d3.json 从“JSON 数据”输入绘制折线图 的相关文章

  • Golang 结构的 XML 和 JSON 标签?

    我有一个可以根据 HTTP 请求标头输出为 JSON 或 XML 的应用程序 我可以通过将正确的标签添加到我正在使用的结构中来实现正确的输出 但我不知道如何为 JSON 和 XML 指定标签 例如 序列化以纠正 XML type Foo s
  • 语法错误:未知:默认情况下不支持命名空间标签

    尝试将 svg 下载为 React 组件时出现以下错误 语法错误 未知 默认情况下不支持命名空间标签 React 的 JSX 不支持命名空间标签 您可以打开 throwIfNamespace 标志来绕过此警告 import React fr
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 使用 babel env 预设时,展开运算符出现语法错误

    我正在努力 现代化 meern io 入门样板 https github com Hashnode mern starter通过替换巴别塔es2015 and stage 0预设为env 然而 似乎env预设无法识别以下片段client m
  • 解释一下这个令人困惑的 dojo 教程声明语法

    我正在阅读使用的语法道场的声明 http dojotoolkit org documentation tutorials 1 8 declare 用于班级创建 描述很混乱 The declare function is defined in
  • 如何使用 Nextjs/React 将 JSON 对象导出到 Excel?

    我有一个检索 json 对象的端点 如下所示 data id 1 temaIndicador Indian codigo 001 observaciones Interactions Specialist tertiary Regional
  • Twitch API - 无法使用 PHP 获取身份验证令牌

    stackoverflow 的成员们大家好 我不是一个喜欢寻求帮助的人 但在这种情况下 我认为这是解决我的问题的唯一方法 谷歌并没有给我太大帮助 所以 我的问题 我想使用 Twitch API 获取一些数据 听起来很容易 我希望是这样 下面
  • document.write 在同一页面上显示内容。

    我对 javascript document write 方法有疑问 大多数情况下 当我使用 document write 时 它会向我显示在不同页面中使用该方法编写的内容 例如 如果我写这样的命令 document write Hello
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 无法从 JQuery ajax 调用接收 JSON

    我已经确定来自服务器的 JSON 是有效的 手动进行 ajax 调用 但我真的很想使用 JQuery 我还使用 firebug 确定发送到服务器的 post URL 是正确的 但是 错误回调仍然被触发 解析错误 我还尝试了数据类型 文本 我
  • 当rest api应用程序服务器(express)和Angulars js应用程序在不同端口上运行时出现Cors问题

    我有用node js编写的rest api应用程序 express在端口3000上运行 而angularjs应用程序在同一服务器上的端口9001上运行 从 angularjs 应用程序调用 rst api 时 出现了 cors 问题 在re
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • 获取类中的所有静态 getter

    假设我有这个类 我像枚举一样使用它 class Color static get Red return 0 static get Black return 1 有没有类似的东西Object keys to get Red Black 我使用
  • jQuery UI 对话框 - 关闭后无法打开

    我有一个问题jquery ui dialog box https jqueryui com dialog 问题是 当我关闭对话框然后单击触发它的链接时 除非刷新页面 否则它不会再次弹出 如何在不刷新实际页面的情况下回调对话框 下面是我的代码
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • MsiOpenProduct 是从已安装产品读取属性的正确方法吗?

    给定 MSI 产品代码 我想从已安装的产品中获取升级代码 以及其他属性 我通过调用 MsiOpenProduct 方法 然后调用 MsiGetProductProperty 来尝试此操作 一个 缩写 示例如下所示 MSIHANDLE han
  • Node.js/Express.js 将 POST 请求转发到另一个域

    我的 express js 应用程序在域上有一条路由example1 com router post messages add req res gt let message new Message message title req bod
  • 在上传到服务器之前使用 Canvas 调整 Iphone 图像的大小

    在上传到我们的服务器之前 我们使用 Canvas 在 Iphone IPAD 上调整图像大小 在 iPhone 4S 和 5 上 当使用前置摄像头以横向模式拍摄照片时 调整大小效果很好 当以肖像模式拍摄时 图像会被压缩约 1 4 但当使用后
  • 通过js获取WebView中的位置

    我正在尝试创建 WebView 它将通过 js 获取 GPS 本地化 但是当我单击应该显示本地化的按钮时 在android 4 1 1 模拟器 中 错误代码2 无法启动地理定位服务 在 android 4 1 2 phone 中什么也没有发
  • 如何在 ASP.NET Core 中获取 SignalR Hub 上下文?

    我正在尝试使用以下命令获取集线器的上下文 var hubContext GlobalHost ConnectionManager GetHubContext
  • 如何获取“未过滤”的数组项?

    假设我有一个数组 我通过调用来过滤它myItems filter filterFunction1 并从中获取一些物品 然后我想运行另一个过滤功能filterFunction2与未被选中的其余项目filterFunction1 是否可以获取调
  • 在VHDL中将8位二进制数转换为BCD

    该算法众所周知 您进行 8 次左移 并在每次移位后检查个位 数十位或数百位 每个 4 位 如果它们超过 4 个 则将 3 个添加到该组中 依此类推 这是一个基于流程的解决方案 但不起作用 它会编译 但输出不是我想要的 有什么想法可能是什么问
  • wp_nav_menu 更改子菜单类名称?

    有没有办法改变孩子 ul class sub menu WordPress 本身生成自定义类名 我认识家长 ul 您可以删除或更改名称 menu class gt newname 我找不到答案 我试过 submenu class gt cu
  • 将 APK 发布到 Play 商店时出现构建版本问题

    我看过很多答案 但大多数都已经过时了 我正在尝试使用 Azure DevOps 管道将我的 Android 应用程序发布到 Play 商店 我遇到了 APK 版本代码的问题 出现以下错误 APK指定已使用的版本代码 任何人都知道如何增加存在
  • Tensorflow:每类 IOU

    我正在尝试使用 deeplab 进行语义分割 我想计算每个班级的 IOU 仅针对个人的 IOU 而不是平均 IOU 在 L142 处https github com tensorflow models blob master researc
  • 为什么当 Visual Studio 打开时,智能感知和代码建议停止工作?

    我在 Microsoft 中遇到 Intellisense 问题视觉工作室2012 http en wikipedia org wiki Microsoft Visual Studio Visual Studio 2012 我将在一个项目中
  • 嵌套索引路由未在react-router-dom v6中呈现

    我有一个安装了react router dom v6 的create react app 项目 尝试使用新的索引路由语法 以便我的 HomePage 组件在当前为布局组件提供服务的索引处呈现 当我导航到索引 http localhost 3
  • 在 OkHttp java 中创建承载授权标头

    我需要使用OkHttp3在java中作为HTTP客户端并在请求中发送授权标头 example 授权 持票人 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 eyJpc3MiOiJodHRaswczovL2F1dGg
  • 通过segue传递数据

    我正在使用tableview 控制器和detailView 做简单的iOS 应用程序 我想要的只是通过 segue 传递数据 这就是它的样子 我想要的是 您单击 Mark za 它将打开 URL 视频编号 1 如果您单击 TV JOJ 它将
  • 在 beforeSend 上停止 $.ajax

    我有这个 jQuery ajax 调用 ajax url my action dataType script beforeSend function if 1 1 just an example return false complete
  • 转换为具有相同数据成员布局但实现不同的类是否安全?

    第一个类将用于私有继承 以确保布局完全相同 这应该可以保证铸造安全 include
  • Angular 构建无法在服务器上运行

    我正在尝试在服务器上运行我的 AngularJS 前端 我正在使用 Yeoman 来构建应用程序 我上传了非常基本的 hello world 应用程序 并获得了未加载 JavaScript 的纯 HTML 文本 Chrome 中的控制台是这
  • 在 Mac 上使用 XAMPP 安装 XDebug for PHP

    我有一台安装了全新 OSX Mojave 的 Mac 我下载了 XAMPP 7 3 并安装 本地 Apache Web 服务器正常工作 我从仪表板获得的 PHPInfo 显示了 php ini 文件的所有正确信息 即 Application
  • Django:选择性地将 CSS 样式应用到测验单选按钮

    我让用户进行测验 在每个问题之后 我想向他们展示他们的答案是正确还是错误 正确的答案应以绿色突出显示 他们的答案 如果不正确 应以红色突出显示 使用 Twitter Bootstrap 样式 我目前正在 Django 和 HTML 中渲染测
  • D3js - 使用 d3.json 从“JSON 数据”输入绘制折线图

    我最近开始学习 D3 js 并遇到了一些问题 这是我到目前为止所尝试过的 这是我的JS d3 json js sample2 json function data var canvas d3 select body append svg a