D3.csv 未从本地 csv 文件加载数据

2023-12-05

I created a copy of the csv file in my local folder because i wanted to mess around with the data a little bit. When i get rid of the link and replace it with the name of my local csv file, the graph doesnt render for some reason. I have added a picture that shows my local file structure. it is in the same folder. What am i doing wrong? enter image description here

import React, {Component, useRef, useEffect} from 'react';
import * as d3 from "d3";
import { select } from 'd3-selection'
import { extent, max, min } from "d3-array";


class Linechart extends Component {
  constructor(props){
    super(props)
    this.createBarChart = this.createBarChart.bind(this)
  }

  componentDidMount() {
    this.createBarChart()
  }

  componentDidUpdate() {
    this.createBarChart()
  }

  createBarChart() {
    var margin = {top: 30, right: 30, bottom: 30, left: 60},
        width = 960 - margin.left - margin.right,
        height = 400 - margin.top - margin.bottom;

    var node = this.node
    var divObj = select(node)
    var svgObj = divObj
                .append("svg")
                .attr("width", width + margin.left + margin.right)
                .attr("height", height + margin.top + margin.bottom)
                .append("g")
                .attr("transform","translate(" + margin.left + "," + margin.top + ")");
    
    //Read the data
    // when i replace the line below wit this line of code, it doesnt read it d3.csv("5_OneCatSevNumOrdered.csv""), function(data) {
    d3.csv("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/5_OneCatSevNumOrdered.csv", function(data) {

      // group the data: I want to draw one line per group
      var sumstat = d3.nest() // nest function allows to group the calculation per level of a factor
        .key(function(d) { return d.name;})
        .entries(data);


      // Define the div for the tooltip
      var tooltip = divObj
        .append("div")  
        .style("position", "absolute")
        .style("z-index", "10")
        .style("visibility", "hidden")
        .text("I AM A TOOLTIP BOOM SHAKALAKA!! BOOM SHAKALAKA!!");       

      // Add X axis --> it is a date format
      var x = d3.scaleLinear()
        .domain(d3.extent(data, function(d) { return d.year; }))
        .range([ 0, width ]);
      svgObj.append("g")
        .attr("transform", "translate(0," + height + ")")
        .attr("stroke-width","0.3")
        .call(d3.axisBottom(x).tickSize(-height).tickFormat('').ticks(5));
      //ticks
      svgObj.append("g")
        .attr("transform", "translate(0," + height + ")")
        .call(d3.axisBottom(x).ticks(5));

      // Add Y axis
      var y = d3.scaleLinear()
        .domain([0, d3.max(data, function(d) { return +d.n; })])
        .range([ height, 0 ]);
      svgObj.append("g")
        .attr("stroke-width","0.3")
        .call(d3.axisLeft(y).tickSize(-width).tickFormat('').ticks(5));
      //ticks
      svgObj.append("g")
        .call(d3.axisLeft(y).ticks(5));
        
      // color palette
      var res = sumstat.map(function(d){ return d.key }) // list of group names
      console.log(res)
      var color = d3.scaleOrdinal()
        .domain(res)
        .range(['#e41a1c','#377eb8','#4daf4a','#984ea3','#ff7f00','#ffff33','#a65628','#f781bf','#999999'])

      // Draw the line
      svgObj.selectAll(".line")
          .data(sumstat)
          .enter()
          .append("path")
            .attr("fill", "none")
            .attr("stroke", function(d){ return color(d.key) })
            .attr("stroke-width", 2.5)
            .attr("d", function(d){
              return d3.line()
                .x(function(d) { return x(d.year); })
                .y(function(d) { return y(+d.n); })
                (d.values)
            })
            .on("mouseover", function(){return tooltip.style("visibility", "visible");})
            .on("mousemove", function(){return tooltip.style("top", (d3.event.pageY-10)+"px").style("left",(d3.event.pageX+10)+"px");})
            .on("mouseout", function(){return tooltip.style("visibility", "hidden");})
      })

    }
    render() {
      return <div ref={node => this.node = node} className="example_div"> </div>
   }
}

export default Linechart;

d3.csv是的一部分d3-fetch图书馆。该库使用native fetch method从互联网上的某个地方获取文件。不幸的是,它无法处理硬盘上的文件。

您需要将该文件提供给localhost:<some port>,就像您可能对反应代码所做的那样。根据您使用的内容,您可能需要更改 webpack/gulp/rollup 配置。否则,如果您有一个使用 Python/C#/Ruby 运行的服务器端 API,只需将其作为静态文件提供。

在任何情况下,文件名/目录都不会起作用,请尝试通过本地主机提供服务。


Edit:提供您放在 Github 上的文件

d3.csv("https://raw.githubusercontent.com/QamarFarooq/data-for-testing/main/5_OneCatSevNumOrdered.csv").then((data) => {
  console.log(data);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D3.csv 未从本地 csv 文件加载数据 的相关文章

随机推荐

  • Android GSON反序列化删除空数组

    我正在使用 GSON 和 Retrofit 我想禁用空数组字段反序列化 DTO public class Entity implements Serializable SerializedName body Expose private B
  • QT QItemSelectionModel 忽略列?

    我试图将树的选择限制为特定列 我大量使用委托来创建自定义的每项每列行为 编辑器等 我希望我可以通过阻止事件或类似的事情从委托中以某种方式完成此操作 问题是 我认为我必须创建一个完全自定义的解决方案来模仿扩展选择 然而 经过大量搜索和很少的示
  • 如何找到列末尾的最后一个单元格的值比 Google 表格中的其他列短?

    我试图弄清楚如何将值添加到 Google 表格中特定列的最后一行 并非电子表格 表格中的所有列都具有相同的长度 因此我不能简单地查找最后一行并添加到列中 我需要找到列中的下一个空单元格并在其中添加新值 浏览文档我认为涉及getRange a
  • GPX 文件无法加载 iOS Xcode

    我正在尝试使用 gpx 文件来模拟位置 该文件在 Xcode 中不起作用 也不显示任何错误 文件大小为 1 1 MB 具有从起始点 A 到起始点 B 的跟踪数据 这会引起任何问题吗 有什么建议吗 Ref 将 GPX 文件添加到 Xcode
  • 在滚动上绘制弯曲(响应式)SVG 路径

    在阅读了所有关于使用 strokeDashArray 技巧对 SVG 进行动画处理的讨论后 我终于找到了一些代码来将此功能连接到用户在屏幕上的滚动位置 电缆代码 blog 这个想法很棒 但我有一条波浪形的 弯曲的路径 实际上在某一点上循环
  • 为什么 Java 的 % 运算符对于负股息给出的结果与我的计算器不同?

    为什么在计算器上 1 mod 26 25 但是在 C 或 Java 中 1 26 1 我需要一个像计算器一样解决这个问题的程序 两者有区别吗 两个答案 25 和 1 都是有效的 只是不同的系统有不同的约定 我看到最常见的 数学 是 quot
  • 如何在NamedQuery中编写NamedQuery半正弦公式?

    我想将半正矢公式的查询作为 NamedQuery 运行 但我不知道如何纠正它 set orig lat 37 334542 set orig lon 121 890821 set dist 10 select 3956 2 ASIN SQR
  • ASP.NET Core razor 页面应用程序中左侧的导航菜单带有关闭和打开按钮

    我正在为我的应用程序使用剃刀页面 我尝试将导航菜单从顶部移动到左侧 我按照此链接中提到的步骤操作如何在引导程序中创建保留的侧边栏菜单 因为我希望我的菜单与该链接中显示的完全一样 但我无法达到结果 链接中提到了有关 simple sideba
  • Objective-c 是否遵循操作顺序(Bedmas)?

    我只是想知道 因为我构建的应用程序做了一个相当长的方程 并且结果与在 Excel 电子表格上完成的结果不同 我在 Excel 电子表格上得到了方程 输入数字越大 差异越大 这是我在 xcode 中输入的等式 360 num1 num3 1
  • svg animateMotion 偏离路径

    I have this svg 我的目标是让盒子沿着路径移动 同时保持旋转 为了实现这一点 我添加了一个
  • PHP XML 实体编码问题

    经过几个小时的研究 我无法找到这个问题的答案 我正在尝试将 XML 字符串发送给第三方 因此我需要对一些字符进行编码 在本例中是单引号 也许还有双引号 我使用 PHP XML Dom 来实现此目的 但 saveXML 函数似乎总是对引号进行
  • 如何找到图像像素值的众数(统计数据)?

    我正在使用 opencv 并且可以通过下面的代码获取图像的像素 一个 3 维元组 但是 我不太确定如何计算图像中像素值的模式 import cv2 import numpy as np import matplotlib pyplot as
  • White Line 不断阻止 Android Studio 中的代码

    已经有一段时间了 我是 Android Studio 的新手 这条非常白的线或其他任何东西一直挡住我的视线 因为代码的可见性不断降低 迫使我继续重建我的项目 但什么也没有发生 请建议我一种可以帮助我的方法或原因 None
  • ASP.NET MVC网站从磁盘读取文件问题

    我正在阅读一个文本文件 其中包含在我正在处理的 MVC 网站中使用 C 的 SQL 插入语句 调试我正在使用的函数时工作正常并且插入发生 但是 一旦我发布该网站并在本地计算机上运行它 甚至将 IIS 设置为使用 asp net 4 0 它似
  • Shopify 中的内容安全违规

    我正在使用 Shopify 并向不同的服务器发出 ajax get 请求 我刚刚实现了它 所以我正在控制台上测试它 请求正在通过 我得到了我想要的响应 但我也收到以下消息 仅限报告 拒绝连接到 https myurl com ApiClie
  • s3- boto- 按上传时间列出存储桶内的文件

    我需要每小时从 s3 服务器下载 100 个最新文件 bucketList bucket list PREFIX 上面的代码创建了文件列表 但它不依赖于文件的上传时间 因为它是按文件名列出的 我对文件名无能为力 它是随机给出的 Thanks
  • Cuda 5.0 链接问题

    我只是想使用 cuda 5 0 预览版构建我的一个旧项目 链接时出现错误 告诉我找不到某些 cuda 函数 例如 undefined reference to cudaMalloc 我的链接命令包括以下 cuda 选项 L usr loca
  • 单击可折叠项时 jQuery Mobile 页面跳转到顶部

    我有一个带有面板导航的 jQuery Mobile 页面 最后两个元素可与其他菜单项折叠 展开或折叠这些会导致页面跳转到顶部 并且用户必须再次向下滚动才能选择显示的条目之一 我试图通过执行来抑制这种行为 preventDefault 在可折
  • 消除 Windows 中可执行文件的“发布者未经验证”警告

    我已经为 Windows 创建了一个应用程序 每次通过打开可执行文件运行该应用程序时 我都会在 Windows 中收到 发布者未经验证 警告 如果我是这个应用程序的唯一受众 那很好 但事实并非如此 有什么方法可以对我的应用程序进行编程 以便
  • D3.csv 未从本地 csv 文件加载数据

    I created a copy of the csv file in my local folder because i wanted to mess around with the data a little bit When i ge