小编Gor*_*don的帖子

如何在嵌入式SVG文件中打开链接在主窗口中打开,而不是在单独的对象中打开

我有一个包含URL链接的SVG文件(由Graphviz生成).我希望这些链接可以点击.首先我试过了

<img src="path/to/my.svg"/>
Run Code Online (Sandbox Code Playgroud)

它显示图像正常,但链接不可点击.更改为对象:

 <object data="/path/to/my.svg" type="image/svg+xml">
Run Code Online (Sandbox Code Playgroud)

使链接可单击,但当用户单击它们时,新页面将在对象内打开.有什么方法可以在主窗口中打开链接吗?

这是使用firefox 5.0,但如果有任何跨浏览器的差异你知道我会很感激警告!

html svg

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

在jsfiddle中加载外部csv文件

我正在尝试为其中一个dc.js示例创建一个jsfiddle.我无法使用URL加载外部文件d3.csv().

有人可以建议如何使用d3.csvjsfiddle 加载csv文件.

jsfiddle d3.js dc.js

19
推荐指数
1
解决办法
6416
查看次数

d3重置范围后保留缩放/平移

<svg>的宽度是其容器的100%.调整容器大小时,我更新线性xScale.range()以表示新的调整大小的宽度<svg>.显然,我需要重新应用范围到zoom.x()文档中概述的缩放行为:

如果以编程方式修改了比例的域或范围,则应再次调用此函数.设置x标度也会将标度重置为1并将平移重置为[0,0].

重置scale并且translate是我遇到问题的地方.如果我在调整大小之前已经放大了,我打电话zoom.x( xScale ),现在d3认为图表的比例是1而翻译是0,0因此,我无法缩小或平移.

我处理调整大小的方法不正确吗?

d3.js

9
推荐指数
1
解决办法
1957
查看次数

直流数据表而不对行进行分组

是否可以使用直流数据表而不显示组中的数据?我只是想显示所有组中的所有数据!

我的代码如下:

dc.dataTable(".dc-data-table")
  .dimension(dateDimension)
  .group(function (d) {
    return ''
  })
  .size(10) // (optional) max number of records to be shown, :default = 25
  .columns([
      function (d) {
          return getFormattedDate(d.dd);
      },
      function (d) {
          return d.referredfor;
      },
      function (d) {
          return numberFormat(d.cost);
      },
      function (d) {
          return d.gender;
      }
  ])
  .sortBy(function (d) {
      return d.dd;
  })
  .order(d3.ascending)
  .renderlet(function (table) {
      table.selectAll(".dc-table-group").classed("info", true);
  });
Run Code Online (Sandbox Code Playgroud)

这显示了我的数据表但是有一个空行,如下所示:

数据表

javascript datatable d3.js dc.js

7
推荐指数
2
解决办法
1698
查看次数

Dc.js将范围图表应用于多个图表

我过去几周一直在使用dc.js,但有一个问题,我似乎无法搞清楚.

我希望能够使用画笔滤镜更改基于单个图表的四个不同图表的比例.有点像:

priorityTotChart
  .width(2*w/3).height(h/3)
  .margins({top: 10, right: 50, bottom: 20, left: 40})
  .dimension(dateDim)
  .group(priorityTotal)
  .centerBar(true)
  .gap(1)
  .x(d3.time.scale().domain([minDate,maxDate]))
  .elasticY(true)
  .brushOn(true);

var translate = 3;  

priority1Chart.width(w/3)
  .height(h/6)
  .transitionDuration(300)
  .margins({top: 10, right: 50, bottom: 25, left: 40})
  .dimension(dateDim)
  .group(priority1)
  .mouseZoomable(false)
  .x(d3.time.scale().domain([minDate,maxDate]))
  .xUnits(d3.time.months)
  .elasticY(true)
  .brushOn(false)
  .ordinalColors(["red"])
  .rangeChart(priorityTotChart)
  .yAxisLabel("Hits per day")
  .renderArea(true)
  .renderlet(function (chart) {
    chart.selectAll("g._1").attr("transform", "translate(" + translate + ", 0)");
});

priority2Chart.width(w/3)
  .height(h/6)
  .transitionDuration(300)
  .margins({top: 10, right: 50, bottom: 25, left: 40})
  .dimension(dateDim)
  .group(priority2)
  .mouseZoomable(false)
  .x(d3.time.scale().domain([minDate,maxDate]))
  .xUnits(d3.time.months)
  .elasticY(true)
  .brushOn(false)
  .ordinalColors(["orange"])
  .rangeChart(priorityTotChart)
  .yAxisLabel("Hits per …
Run Code Online (Sandbox Code Playgroud)

crossfilter dc.js

6
推荐指数
1
解决办法
3856
查看次数

dc.js - 显示图表外部的鼠标悬停值

我想创建一个类似于以下示例的堆叠线图:

https://dc-js.github.io/dc.js/

但是,另外我想在图表上方显示鼠标悬停的当前值的字段.

也就是说,不必在光标图上暂停一秒钟,然后将鼠标悬停在框上,我希望这些值显示在图表外部,类似于他们在Google财经中所做的那样(请参阅鼠标悬停时,图表左上角的价格和价格会发生变化.例如https://www.google.com/finance?q=apple&ei=MUiWVtnQIdaP0ASy-6Uo

我真的很感谢社区可以分享的最佳方法.

dc.js

5
推荐指数
1
解决办法
1692
查看次数

dc.js使用三列的最小最大平均值创建dataTable

尝试使用样本数据中3列的最小值,最大值和平均值创建d3/dc/xfilter dataTable.一直在苦苦挣扎但无法理解如何将reduceAdd,reduceRemove,reduceInitial函数集成到dataTable中以创建三个必要的行.

期望的输出将如下所示:

------------------------------------------
|  Value   |  Cars  |  Bikes  |  Trucks  |
------------------------------------------
|    Min   |   125  |   310   |    189   |
------------------------------------------
|    Max   |   230  |   445   |    290   |
------------------------------------------
|    Avg   |   178  |   385   |    245   |
------------------------------------------
Run Code Online (Sandbox Code Playgroud)

也看不出如何添加第一个(标签)列.我知道reduceInitial可以返回一个数组(例如['min', 'max', 'avg'])但是如何引用它的标签?

var myCSV = [	
{"shift":"1","date":"01/01/2016/08/00/00","car":"178","truck":"255","bike":"317","moto":"237"},
{"shift":"2","date":"01/01/2016/17/00/00","car":"125","truck":"189","bike":"445","moto":"273"},
{"shift":"3","date":"02/01/2016/08/00/00","car":"140","truck":"219","bike":"328","moto":"412"},
{"shift":"4","date":"02/01/2016/17/00/00","car":"222","truck":"290","bike":"432","moto":"378"},
{"shift":"5","date":"03/01/2016/08/00/00","car":"200","truck":"250","bike":"420","moto":"319"},
{"shift":"6","date":"03/01/2016/17/00/00","car":"230","truck":"220","bike":"310","moto":"413"},
{"shift":"7","date":"04/01/2016/08/00/00","car":"155","truck":"177","bike":"377","moto":"180"},
{"shift":"8","date":"04/01/2016/17/00/00","car":"179","truck":"203","bike":"405","moto":"222"},
{"shift":"9","date":"05/01/2016/08/00/00","car":"208","truck":"185","bike":"360","moto":"195"},
{"shift":"10","date":"05/01/2016/17/00/00","car":"150","truck":"290","bike":"315","moto":"280"},
{"shift":"11","date":"06/01/2016/08/00/00","car":"200","truck":"220","bike":"350","moto":"205"},
{"shift":"12","date":"06/01/2016/17/00/00","car":"230","truck":"170","bike":"390","moto":"400"},
];


dataTable = dc.dataTable('#dataTable');
lc1 = dc.lineChart("#line1");
lc2 = dc.lineChart("#line2");
lc3 = dc.lineChart("#line3");

var dateFormat …
Run Code Online (Sandbox Code Playgroud)

crossfilter dc.js

5
推荐指数
1
解决办法
827
查看次数

如何在呈现图表后为 dc.js 图表应用工具提示

我有多个行图(crossfilter + dc),我想使用 d3-tip 自定义工具提示。

所以基本上相关的代码是:

rowtip = d3.tip()
    .attr('class', 'd3-tip')
    .offset([-10, 0])
    .html(function (d) { return d.key + ": "  + d.value; });

...my dc charts ...

... then at the bottom of my script tags ...

d3.selectAll('g.row').call(rowtip);
d3.selectAll('g.row').on('mouseover', rowtip.show);
Run Code Online (Sandbox Code Playgroud)

该代码似乎有效,但鼠标悬停事件不会自动触发,并且在页面加载时不会显示工具提示。

但是如果我在控制台上运行最后一行(鼠标悬停),那么一切都会按预期进行。

在此处输入图片说明

所以我的问题是如何确保在页面加载时触发鼠标悬停事件。我试过 Jquery $(document).ready(....),但这没有用。

它必须与加载元素的顺序有关......我猜。但我不是 javascript 专家,更不用说 d3。

提前致谢。

tooltip d3.js crossfilter dc.js

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

DC JS:如何在单击时突出显示聚合数据表中的行,类似于行图?

我喜欢 DC.JS 库,并且一直尝试在 DC.js 中创建可点击的聚合表,并取得了部分成功。我想突出显示单击事件上的行(允许多个选择),类似于 dc js 中的行图或序数条形图。与行图一样,当进行多个选择时,应突出显示多个表行。

我无法选择我单击的行,相反,我的 css 会选择第一行,无论我单击哪一行。我尝试使用“this”关键字来选择被单击的当前行,但无济于事。

这是js小提琴:https://jsfiddle.net/yashnigam/kvt9xnbs/83/

这是我进行 CSS 选择的 click 事件的代码:

       marketTable.on("renderlet", function(chart){

        chart.selectAll('tr.dc-table-row').on('click',function(d){

            if(filterKeys.includes(d.key)){

             chart.select('tr.dc-table-row').datum(d.key).style('background-color','gray');
            }

        })

    });
Run Code Online (Sandbox Code Playgroud)

请分享一种在单击时突出显示数据表行的方法,与在行图上的工作方式相同。

d3.js dc.js

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

dc.js 和 crossfilter 减少了一周中每天的平均计数

我很难让我的交叉过滤器组正确设置。也许有人可以给出提示!

我的数据结构或多或少是这样的:

{datetime: "2014-01-01 20:00:00", id:1}
{datetime: "2014-01-01 22:21:08", id:2}
{datetime: "2014-01-02 12:00:23", id:3} etc...
Run Code Online (Sandbox Code Playgroud)

维度在 datetime 上返回星期几:

var weekdayDimension = ndx.dimension(function(d) {
    return new Date(d.datetime).getDay();
});
Run Code Online (Sandbox Code Playgroud)

现在我在分组方面遇到了问题。我想要每个工作日的平均事件数。到目前为止我有(当然不正确)

var weekdayAvgGroup = weekdayDimension.group(function (d) {
    return d;
});
Run Code Online (Sandbox Code Playgroud)

我想我不明白那个分组到底在做什么......

我的目标是制作一些图表,例如:

Monday => Average 40.3 Events
Tuesday => Average 35.4 Events
Run Code Online (Sandbox Code Playgroud)

我创建了一个JSFiddle请看一下。

有人可以给点提示吗?

更新:

经过额外的思考,我可以在日期上创建一个维度。我所要做的就是知道选择的天数以计算

(total amount of events selected/number of selected days)
Run Code Online (Sandbox Code Playgroud)

所以我需要计算日期维度上的组数。但也没有找到解决方案。

谢谢

javascript crossfilter dc.js

3
推荐指数
1
解决办法
4893
查看次数

标签 统计

dc.js ×8

d3.js ×5

crossfilter ×4

javascript ×2

datatable ×1

html ×1

jsfiddle ×1

svg ×1

tooltip ×1