2017-03-24 16 views
2

データの読み込みに時間がかかります。ここでは第1のコンテンツの行とヘッダ行です:日付解析でcsvで読む

BookingID,Type,Status,Unit Booked,Unit Owner,Destination,Booking Date,Checkin,Checkout,Renter - FirstName,Renter - LastName,Renter - EmailAddress,Renter - WorkPhone,Renter - HomePhone,#Adults,#Children,Total Stay,Total Paid,Total Due 
15642889,House,Confirmed,GV T3 #2106,,,3/20/2016 7:00:00 PM,3/23/2016 3:00:00 PM,3/28/2016 11:00:00 AM,FirstName,LastName,first&[email protected],+1 (000) 000-0000,+1 (000) 000-0000,2,0,895,895,0 

とロードの関連する行で、私は好きな私のCSVの構文解析:

var parseDate = d3.time.format("%m/%d/%Y %H:%M:%S %p").parse; 
var data = d3.csv("Sales Export Friendly 3-19-17.csv", function(data) { 
    return { 
     unit: data["Unit Booked"], 
     date: parseDate(data["Booking Date"]).getMonth() + 1, 
     checkin: parseDate(data["Checkin"]).getMonth() + 1, 
     LOS: parseDate(data["Checkout"]).valueOf() - parseDate(data["Checkin"]).valueOf()/(24*60*60*1000), 
     total: +data["Total Stay"], 
     avgNight: (+data["Total Stay"])/((new Date(data["Checkout"]).valueOf() - new Date(data["Checkin"]).valueOf())/(24*60*60*1000)) 
     }; 
}); 

アイデアは、私は、その後のような何かをするということですこれは:

d3.parcoords()("#TopLeft").alpha(0.4) 
     .data(data) 
     .dimensions(data.columns) 

私はconsole.log(data.columns)しようとすると;私のコールバック関数の後、私は定義されていません。ここでは、console.log(data);私は現在取得しています

Object { header: Cn/u.header(), mimeType: Cn/u.mimeType(), responseType: Cn/u.responseType(), response: Cn/u.response(), get: Cn/</u[n](), post: Cn/</u[n](), send: Cn/u.send(), abort: Cn/u.abort(), on: M/<(), row: e/o.row() } 

およびエラー・コード:d3.parcoords上

TypeError: data.slice is not a function 

データ(データ)を呼び出し、

TypeError: e is undefined 

上を見て、非常に奇妙である印刷物、この行:

checkin: parseDate(data["Checkin"]).getMonth() + 1, 

私は午前ここで何がうまくいかないのか混乱している。私はd3 v3を使用しています。

+0

私はD3のCSVパーサを使用していない(私はD3を使用するが、そうでない場合) 。しかし、バージョン3を使用している場合は、戻り値としてではなく、2番目のコールバックとして完全な配列としてデータ結果が実際に来るようです。あなたが定義した唯一のコールバックはアクセサです。 [それに関する文書](https://github.com/d3/d3-3.x-api-reference/blob/master/CSV.md#csv) –

答えて

1

あなたはD3バージョン3.xを使用しているのでは、データアレイに追加何らcolumnsプロパティはありません(:https://stackoverflow.com/a/42994150/5768908ここに私の答えを見ています)。

しかし、解決策は簡単です。ただ、置き換え:

dimensions(data.columns) 

で:ここで

dimensions(d3.keys(data[0])) 

はデモです:

var data = d3.csv.parse(d3.select("#csv").text()); 
 

 
console.log(d3.keys(data[0]));
pre{ 
 
    display: none; 
 
}
<script src="https://d3js.org/d3.v3.min.js"></script> 
 
<pre id="csv">BookingID,Type,Status,Unit Booked,Unit Owner,Destination,Booking Date,Checkin,Checkout,Renter - FirstName,Renter - LastName,Renter - EmailAddress,Renter - WorkPhone,Renter - HomePhone,#Adults,#Children,Total Stay,Total Paid,Total Due 
 
15642889,House,Confirmed,GV T3 #2106,,,3/20/2016 7:00:00 PM,3/23/2016 3:00:00 PM,3/28/2016 11:00:00 AM,FirstName,LastName,first&[email protected],+1 (000) 000-0000,+1 (000) 000-0000,2,0,895,895,0</pre>

+1

を参照してください。また、以前の質問ではhttp://stackoverflow.com/a/42968617/5768908)カラムはD3 v4でのみ追加されたプロパティだと明示的に言います。 –

+0

はい、ありがとうございます。 v3の代替品をどこで見つけるのかはあまりよく分かりませんでした。私はconsole.log(d3.keys(data [0]));を使用すると、多くのご協力ありがとうございます、ご協力ありがとうございます:) –

+0

データ変数を宣言した後、空の配列が返されます。それはparseDate関数の問題であるようですが、私は何を修正するかを考え出すのに苦労しています! –

関連する問題