小编Ger*_*ado的帖子

d3版本4中的'd3.svg.axis()'是什么?

如何使用新版本的D3 API替换以下行?

我已经换scale.linear()scaleLinear()

var xRange = d3.scaleLinear()
    .domain([OIResults.min,OIResults.max]).range([40, 360]);

var yRange = d3.scaleLinear()
    .domain(y_domain).range([360, 40]);
Run Code Online (Sandbox Code Playgroud)

以下行需要根据新API进行替换:

var xAxis = d3.svg.axis().scale(xRange).tickFormat(function(d) { return d.x;});
var yAxis = d3.svg.axis().scale(yRange).orient("left");
Run Code Online (Sandbox Code Playgroud)

d3.js

43
推荐指数
1
解决办法
4万
查看次数

D3 v4 .rangeBand()等效

在D3版本4.x中,d3.scale.ordinal()已更改为d3.scaleOrdinald3.rangeRoundBands已更改为:

d3.scaleBand()
  .rangeRound([range]);
Run Code Online (Sandbox Code Playgroud)

要找到一个乐队的宽度,相当于d3.rangeBand()什么?

javascript svg d3.js

30
推荐指数
1
解决办法
2万
查看次数

d3.svg.diagonal()在哪里?

我试图执行这里提到的可折叠树代码.但似乎对角线方法不适用于v4(我可能错了).

对于:

var diagonal = d3.svg.diagonal()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

var diagonal = d3.svg.diagonal()
Run Code Online (Sandbox Code Playgroud)

如果是,那么v4中的等价是什么?看看d3.js API参考没有给我任何线索.

javascript svg d3.js

30
推荐指数
3
解决办法
2万
查看次数

D3.js - 无法读取未定义的属性"轴"

这是我的代码片段:

var xScale = d3.scaleLinear().range([MARGINS.left, WIDTH -  MARGINS.right]).domain([scaleMin, scaleMax]);
var yScale = d3.scaleLinear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([minValue,maxValue+numberOfSignals*300]);
xAxis = d3.svg.axis().scale(xScale);
yAxis = d3.svg.axis().scale(yScale).orient("left");

vis.append("svg:g")
        .attr("transform", "translate(0," + (HEIGHT - MARGINS.bottom) + ")")
        .call(xAxis);

vis.append("svg:g")
        .attr("transform", "translate(" + (MARGINS.left) + ",0)")
        .call(yAxis);
Run Code Online (Sandbox Code Playgroud)

这是我的代码.但每次我运行它我得到错误"情节:91未捕获的TypeError:无法读取未定义的属性'轴'".事情是,它以前工作.有更新吗?谢谢!

javascript d3.js d3v4

28
推荐指数
1
解决办法
2万
查看次数

在数组与对象中传播未定义

为什么在对象中传播undefined会返回一个空对象?{...undefined} // equals {}:

console.log({...undefined})
Run Code Online (Sandbox Code Playgroud)

为什么在数组中传播未定义会给出错误? [...undefined] // type error:

console.log([...undefined])
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 spread-syntax

24
推荐指数
2
解决办法
3556
查看次数

有没有一种方法可以将CSV列转换为层次关系?

我有700万份生物多样性记录的csv,其中分类学级别为列。例如:

RecordID,kingdom,phylum,class,order,family,genus,species
1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens
2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis
3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana
4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris
Run Code Online (Sandbox Code Playgroud)

我想在D3中创建一个可视化文件,但是数据格式必须是网络,其中每个列的不同值都是上一个特定值的列的子级。我需要从csv转到类似这样的内容:

{
  name: 'Animalia',
  children: [{
    name: 'Chordata',
    children: [{
      name: 'Mammalia',
      children: [{
        name: 'Primates',
        children: 'Hominidae'
      }, {
        name: 'Carnivora',
        children: 'Canidae'
      }]
    }]
  }]
}
Run Code Online (Sandbox Code Playgroud)

我还没有想到不使用上千个for循环就如何做到这一点的想法。是否有人对如何在python或javascript上创建此网络提出建议?

javascript python data-visualization hierarchical-data d3.js

24
推荐指数
4
解决办法
521
查看次数

"插值"不是一个功能

我是D3的新手并在几张图表上进行实验.在使用D3 V4构建折线图时,我遇到了以下错误.

d3.line(...).x(...).y(...).interpolate不是函数

我认为这个错误是由于D3 v4中的函数插值不可用.如果有人可以帮助我使用插值函数的替换函数,那将会很棒.

我的代码在以下链接中

https://ghostbin.com/paste/ztans

javascript data-visualization d3.js

20
推荐指数
1
解决办法
1万
查看次数

Safari / iOS中“下载”属性的替代方法

我有一个用base64创建的Blob,我需要将此数据下载为pdf。

我创建了以下代码段:

    var blob = new Blob([byte]);
    var link = document.createElement('a');

    link.href = window.URL.createObjectURL(blob);
    link.target = '_blank';
    var fileName = name + '.pdf';
    link.download = fileName;
    link.click();
Run Code Online (Sandbox Code Playgroud)

它适用于所有浏览器,但iOS上的safari mobile除外。

该文件实际上已下载,但名称为“未知”,由于扩展名丢失,因此无法打开。

问题在于,下载属性缺少对此浏览器和IE的支持。

IE有很多解决方法,但我没有在Safari / iOS中找到任何解决方法。

您知道如何在此浏览器中下载从base64(不涉及XHR)获得的Blob吗?

谢谢

html javascript safari download ios

18
推荐指数
3
解决办法
954
查看次数

在 D3 v6 中无法在鼠标悬停时获取节点数据

我正在尝试selection.on()在 D3 v6 中获取节点的绑定数据。在我的事件侦听器中,我获取的是鼠标事件数据而不是数据。我如何获取数据?

这是我的代码

const data = {
        "nodes": [{
            "id": "Myriel",
            "group": 1
        }, {
            "id": "Napoleon",
            "group": 1
        }]};

const nodes = data.nodes.map(d => Object.create(d));

const node = svg.append("g")
        .selectAll("circle")
        .data(nodes)
        .join("circle")
        ...

  node.on("mouseover",d=>{
      console.log(d); //output = MouseEvent
      console.log(d.id); //output = undefined
  });
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

18
推荐指数
1
解决办法
1万
查看次数

D3转换循环抛出Uncaught TypeError:t.call不是函数

这是D3的新手,也是JS的新手.我试图在点击上创建一个圆圈,一旦创建该圆圈需要反复脉动.现在,它正在被正确创建并且它会进行一次转换,但之后由于错误而死亡.这是我的代码:

var shapesAtt = shapes
    // omitted: assigning fill, position, etc; working as intended
    .on("click", circleMouseClick);

function circleMouseClick(d, i)
{
    createPulse(this);
}

function createPulse(focusElement)
{
    // takes in "focal circle" element
    // some things here are hard coded for ease of reading 
    // (i.e. these variables aren't all useless)

    var focus = d3.select(focusElement);
    var origR = focus.attr("r");
    var origX = focus.attr("cx");
    var origY = focus.attr("cy");
    var origFill = focus.style("fill");

    var strokeColor = "black";

    var newG = svgContainer.append("g");
    var pulser = …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js d3v4

17
推荐指数
1
解决办法
6430
查看次数