使用add.Series(CSV数据集)苦苦挣扎

时间:2014-04-08 02:05:07

标签: dimple.js

我会尽量保持这一点。我有一个CSV,其中包含特定街道的流量计数。到目前为止,我已经在(x)轴上绘制了街道名称,并在(y)轴上绘制了总流量计数。 CSV还包含旅行车辆的计数(<15分钟,15-30分钟,30-45分钟,60分钟等)。

我要做的是按照(&lt; 15,15-30等)分钟计数“分割”每条街道的总数,类似于类别。基本上,我试图复制这个例子: http://dimplejs.org/examples_viewer.html?id=bars_vertical_grouped_stacked其中“所有者”类别是我的数据集中的“动脉”类别。

简而言之: 1.我可以半成功地分割一些街道名称,但是,有些似乎根本没有拆分,即使这些类别存在计数。

  1. 工具提示未显示特定于类别的计数。它似乎将所有计数推到一个工具提示中,而不管是否悬停在一个类别上。

  2. 对于图例,有没有办法确保它使用街道名称?如果我删除“Commute”值并保留“Arterial”,它会正确使用名称,但之后我将失去显示类别的能力。

  3. 我希望这不会太混乱。我真诚地感谢任何帮助。

    CODE:                  var svg = dimple.newSvg(&#34; #chartContainer&#34;,1280,720);

    d3.csv("../HTML/strippedData_v2.csv", function (data) {
            var myChart = new dimple.chart(svg, data);
                myChart.setBounds(60, 45, 510, 315)
                myChart.addCategoryAxis("x", ["Arterial"]);
                myChart.addMeasureAxis("y", "Total");
                myChart.addSeries(["Arterial", "Commute15", "Commute1530", "Commute3045", "Commute4560", "Commute60"], dimple.plot.bar);
                myChart.addLegend(200, 10, 380, 20, "right");
                myChart.draw();
        });
    

    图片:(没有足够的代表:/)

    (仅适用于图库的前3张图片。) http://imgur.com/a/8P2tN#0

1 个答案:

答案 0 :(得分:1)

我正在努力弄清楚你想要图表的样子。我怀疑问题可能是CommuteXX字段。听起来您正试图将它们视为维度值,而凹坑将列视为维度(并将其行值视为维度值)。因此,您需要重新组织您的数据:

Arterial       |Commute      |Population
Colfax Avenue  |Commute15    |1380
Colfax Avenue  |Commute1530  |1641
Colfax Avenue  |Commute3045  |855
Etc...

加载CSV后,可以在Javascript中完成此操作。这是一个功能:

function unPivot(sourceData, valueFields, newCategoryField, newValueField) {
    var returnData = [],
        newRow,
        key,
        i,
        j;
    for (i = 0; i < sourceData.length; i += 1) {
        for (j = 0; j < valueFields.length; j += 1) {
            newRow = {}
            for (key in sourceData[i]) {
                if (sourceData[i].hasOwnProperty(key) && valueFields.indexOf(key === -1)) {
                    newRow[key] = sourceData[i][key];
                }
            }
            newRow[newCategoryField] = valueFields[j];
            newRow[newValueField] = sourceData[i][valueFields[j]];
            returnData.push(newRow);
        }
    }
    return returnData;
};

这里有一个小提琴:http://jsfiddle.net/GeLng/15/

我不确定这是否是您正在寻找的图表,您提到了一个分组栏,但我不确定您想要分组。希望这会让你足够按照自己的方式创建图表。