小编Gor*_*don的帖子

dc.js-如何从多列创建折线图

我需要使用来自csv中多个列的输入在dc.js中创建一个行图。所以我需要将一列映射到每一行,并将每一列的总数映射到行值。可能有一个明显的解决方案,但我似乎找不到任何示例。非常感谢S

更新:这是一个快速的草图。为标准“
行图”表示歉意;
第1列----------------- 64(第1
列的总计)第2列------- 35(第2列的总计)第3列
--------- --- 45(第3列的总计)

javascript d3.js crossfilter dc.js

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

crossfilter-计算具有属性的所有记录的百分比

这是我的问题:

我正在使用从mongo db获取json数据的python flask服务器,并在其中指定要导入的字段。此数据为json格式,仅以这种方式获取。一旦通过graphs.js中的交叉过滤器,是否可以对这些字段进行转换?例如,我有一个状态属性,该属性可以采用值“通过”,“进行中”,“保留”或“失败”。我基本上想做一个指标,告诉我失败的百分比。因此,理想情况下,我必须对数据进行一些计算。请对此提供建议。

Sample data (in tabular form for clarity) looks like:
TrialLocation     | Subject Status
Site A            | In progress
Site A            | Pass
Site B            | In progress
Site A            | In progress
Site B            | On Hold
Site A            | Screen Failure
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我应该获得在x轴和y轴上具有站点名称的条形图,我应该获得计算失败百分比的度量。在这种情况下,对于网站A,将为25%;对于网站B,为0%。

因此,我首先创建了图表,该图表为我提供了每个站点的主题计数。

var siteName = ndx.dimension(function(d) { return d["TrialLocation"];});
var numSubjectsBySite = siteName.group();
var siteLevelChart = dc.barChart("#site-level-count", "subjectView");
Run Code Online (Sandbox Code Playgroud)

最后是图表:

siteLevelChart
 .width(2000)
 .height(200)
 .transitionDuration(1000)
 .dimension(siteName)
 .group(numSubjectsBySite)
 .ordering(function(d){return d.value;})
Run Code Online (Sandbox Code Playgroud)

所以我想,我将用SubjectStatus =“ Screen Failure”计算行数,然后将其除以总行数,在这种情况下将是“ numSubjectsBySite”变量。然后,当我引入此代码时:

var countScreenFailures …
Run Code Online (Sandbox Code Playgroud)

d3.js crossfilter dc.js

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

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图表​​颜色

为什么所有dc.js图表​​都是蓝色的?我该如何改变呢?经过dc.css,没有看到太多蓝色的使用!

我尝试改变了fill不少的属性.我唯一成功的是条形图.仍然没有饼图的线索.

javascript graph colors crossfilter dc.js

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

Crossfilter组功能的奇怪行为

我使用dc.js和Crossfilter面临一个奇怪的问题.想象一下以下数据和代码

test_data = [{date: d3.time.format("%Y-%m-%dT%H:%M:%S+0100").parse("2014-11-24T12:00:00+0100"), cnt: 1}, 
             {date: d3.time.format("%Y-%m-%dT%H:%M:%S+0100").parse("2014-11-24T11:00:00+0100"), cnt: 2},
             {date: d3.time.format("%Y-%m-%dT%H:%M:%S+0100").parse("2014-11-24T12:00:00+0100"), cnt: 3}],
test_ndx = crossfilter(test_data),
test_dim = test_ndx.dimension(function(d) { return d.date; }),
test_grp = test_dim.group(function(d) { return d.getHours(); });
Run Code Online (Sandbox Code Playgroud)

test_grp.all()[{key: 11, value: 1}, {key: 12, value: 2}]像我期望的那样回归.

如果我将最后一行更改为

test_grp = test_dim.group(function(d) { return -d.getHours(); });
Run Code Online (Sandbox Code Playgroud)

test_grp.all()回报[{key: -11, value: 3}].

为什么不回归[{key: -11, value: 1}, {key: -12, value: 2}]呢?

crossfilter

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

在x轴上跳过重叠标签以获取dc.js中的条形图

如何动态跳过dc.js图表​​中x轴上的标签,以便它们不应与大数据集重叠.

在此输入图像描述

这是我脚本的一部分

 requestDateBarChart
            .width(725)
            .height(300)
            .margins({top: 10, right: 10, bottom: 60, left: 30})
            .dimension(requestDateDimension)
            .group(requestDateGroup)
            .x(d3.scale.ordinal().domain(coh.map(function (d) {return d.customerRequestDate; })))
            .xUnits(dc.units.ordinal)
            .elasticY(true)
            .renderHorizontalGridLines(true)
            .on('renderlet',function(chart){
                  chart.selectAll("g.x text")
                    .attr('dx', '-15')
                    .attr('transform', "rotate(-55)");
                })
            .controlsUseVisibility(true);
Run Code Online (Sandbox Code Playgroud)

d3.js dc.js

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

dc.js 复合图切换图

有没有办法在复合图表中打开/关闭图表

如果我将鼠标悬停在图例上,相应的图表会突出显示,但如果我们可以选择要显示的图表(隐藏/显示图例、复选框等),那就太好了。

我确实找到了对hideStack 的引用,但我认为这不是我需要的。

有任何想法吗?

(当前 DC 版本:2.0.0-alpha.2

dc.js

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

显示dc.js行图中的百分比

我有一个饼图,我已经转换为行图,使其更具可读性.

在行图表条目的标签中,我希望能够报告每行的百分比细分(可以使用开始和结束角度的饼图).

我不知道如何将百分比添加到标签中.这可能吗?

javascript d3.js dc.js

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

在数据表中单击以过滤其他图表(dc.js)

单击数据表中的一行时,需要过滤其他图表。

我做了

my_table.on('pretransition', function (table) {
     table.selectAll('td.dc-table-column')
          .on('click',function(d){
                table.filter(d.key)
                dc.redrawAll();
           })
});
Run Code Online (Sandbox Code Playgroud)

但其他图表没有任何反应。

你能帮我吗?

dc.js

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

为什么 dc.js 中的一个图表不能过滤另一个图表?

我无法理解 dc 组如何绘制图表。这样一个过滤器的变化就会反映在所有其他过滤器上。我有一个带有两个系列图表的简单代码。当我在其中一个画笔上绘制画笔时,它不会过滤另一个画笔。不知道为什么?有人可以快速浏览一下小代码并提出建议吗?

d3.csv("data/compareData.txt", function(data) {

  ndx = crossfilter(data);
  runDimension = ndx.dimension(function(d) {return [+d3.time.format.iso.parse(d.timestamp), +d.meterid]; });
  frequencyGroup = runDimension.group().reduceSum(function(d) { return +d.frequency; });
  magnitudeGroup = runDimension.group().reduceSum(function(d) { return +d.magnitude; });


 frequencyChart
    .width(768)
    .height(480)
    .chart(function(c) { return dc.lineChart(c).interpolate('basis'); })
    .x(d3.time.scale().domain([1366621166000, 1366621179983]))
    .y(d3.scale.linear().domain([90, 100]))
    .brushOn(true)
    .yAxisLabel("Measured Speed km/s")
    .xAxisLabel("Run")
    .elasticY(true)
    .dimension(runDimension)
    .group(frequencyGroup)
    .mouseZoomable(false)
    .seriesAccessor(function(d) {return +d.key[1];})
    .keyAccessor(function(d) {return +d.key[0];})
    .valueAccessor(function(d) {return +d.value;})
    .legend(dc.legend().x(350).y(350).itemHeight(13).gap(5).horizontal(1).legendWidth(140).itemWidth(70));
  frequencyChart.yAxis().tickFormat(function(d) {return d3.format(',d')(d);});
  frequencyChart.margins().left += 40;

 magnitudeChart
    .width(768)
    .height(480)
    .chart(function(c) { return dc.lineChart(c).interpolate('basis'); })
    .x(d3.time.scale().domain([1366621166000, 1366621179983]))
    .y(d3.scale.linear().domain([90, 100]))
    .brushOn(true) …
Run Code Online (Sandbox Code Playgroud)

d3.js dc.js

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

标签 统计

dc.js ×9

crossfilter ×5

d3.js ×5

javascript ×4

colors ×1

graph ×1