简体   繁体   English

C3.js从CSV中排除列

[英]C3.js exclude columns from CSV

I am creating a multiple series line graph with C3.JS by loading the data from a provided CSV file. 我正在使用C3.JS创建一个多系列折线图,方法是从提供的CSV文件中加载数据。 I can plot the graph however I have not found yet if it is possible to only plot certain columns from the CSV, my graph is plotting all the CSV columns. 我可以绘制图形,但是我还没有找到,如果只能绘制CSV中的某些列,我的图表将绘制所有CSV列。

My CSV look like this: 我的CSV看起来像这样:

Sex,Age,L,M,S,P3,P5,P10,P25,P50,P75,P90,P95,P97
2,0,-1.298749689,34.7115617,0.046905108,31.93019666,32.25089861,32.75948527,33.65186554,34.7115617,35.85124044,36.9534983,37.65137722,38.12110271
2,0.5,-1.440271514,36.03453876,0.042999604,33.38070525,33.68743507,34.17345861,35.02508397,36.03453876,37.11806755,38.16405088,38.82535049,39.27005698
2,1.5,-1.581016348,37.97671987,0.038067862,35.48627093,35.77560367,36.23325692,37.03281566,37.97671987,38.9853304,39.95458524,40.56517149,40.97482424
2,2.5,-1.593136386,39.3801263,0.035079612,36.98550023,37.26521982,37.70685493,38.47603153,39.3801263,40.34145495,41.2606303,41.83732218,42.22321458

And I which to only plot the lines for the percentiles (P* columns) columns with the Age as the X axis, and exclude the Sex, L, M and S columns from being plotted. 我只绘制以百分数为X轴的百分位数(P *列)列的行,并排除绘制的性别,L,M和S列。

currently my graphs looks like this: 目前我的图表看起来像这样: 在此输入图像描述

One solution is to remove the columns from the CSV file however this will not be possible as I will need the other values latter for other computations and I wish to keep all data in one file. 一种解决方案是从CSV文件中删除列,但是这是不可能的,因为我将需要其他值用于其他计算,并且我希望将所有数据保存在一个文件中。

My C3.js code looks like this: 我的C3.js代码如下所示:

var chart = c3.generate({
    data: {
                x: 'Age',
        url: '/data/cdc/cdc_female_hcageinf.csv',
                type: 'line'

        },
    tooltip: {
        show: false
    },
            point: {
        show: false
    }
});

I am not sure if there is a c3.js configuration or method to do so, or a javascript method will be necessary. 我不确定是否有c3.js配置或方法,或者需要javascript方法。

Inspired by @Armani I've ended up doing this, which is a combination of using d3.csv function with c3, as I didn´t find a way to do it with c3 URL. 受到@Armani的启发我最终做到了这一点,这是使用d3.csv函数和c3的组合,因为我没有找到使用c3 URL的方法。

  1. First I used D3 to load the CSV file into a JSON object 首先,我使用D3将CSV文件加载到JSON对象中
  2. Modify the data as required (not filtering) 根据需要修改数据(不过滤)
  3. Feed C3 with the json object 使用json对象提供C3
  4. Use the "keys" property inside the c3 call to only show the fields I want. 使用c3调用中的“keys”属性只显示我想要的字段。

 d3.csv( _dataPath, function ( d ) { var data = d; if ( configdata.axis.x.source_units == "meses" && configdata.axis.x.units == "años" ) { data[ configdata.axis.x.property_key ] = data[ configdata.axis.x.property_key ] / 12; } return data; }, function( error, data ) { if (!error) { var percentiles = []; configdata.percentilesData.forEach( function( p ) { percentiles.push( p.name ); }); var x_axis_label = configdata.axis.x.label + ' (' + configdata.axis.x.units + ')'; var y_axis_label = configdata.axis.y.label + ' (' + configdata.axis.y.units + ')'; var chart = c3.generate({ bindto: '#chart', data: { json: data, type: 'line', keys: { x: configdata.axis.x.property_key, value: percentiles } }, axis: { y: { label: y_axis_label }, x: { label: x_axis_label } }, tooltip: { show: false }, point: { show: false } }); } }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script> 

you have to add a filter to your file's columns/keys 您必须在文件的列/键中添加过滤器

d3.csv("yourfile.csv", function(csv) {
 csv = csv.filter(function(key) { 
  return key != "Sex" && key != "L" && key != "M" && key != "S" ;
   }); 
 });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM