প্রথমে, আপনার সিএসভির প্রথম সারিতে এই পদ্ধতিটি ব্যবহার করতে কলামের নামের সাথে কমা দ্বারা পৃথক হওয়া তালিকা থাকতে হবে। যদি এটি সম্ভব না হয় তবে এই সম্পর্কে একটি মন্তব্য যুক্ত করুন এবং আমি কীভাবে এর d3.csv.parseRows
পরিবর্তে কীভাবে ব্যবহার করতে পারি তা যদি আমি কাজ করতে পারি তবে তা দেখতে পাচ্ছি d3.csv.parse
। d3.csv.parse
মূল্যায়নকারী ফাংশন দ্বারা বলা হয় .defer(function, url, assessor)
।
আমি এখন আপনার ফাইলটিকে এমন দেখাচ্ছে বলে ধরে নিচ্ছি:
danger.csv
iso,level
AFG,100
ALB,0
DZA,12
...
এটি ব্যবহার করে, আপনি আইএসও 3 থেকে বিপদ স্তর পর্যন্ত একটি লুকের হ্যাশ তৈরি করতে পারেন।
var dangerByISO3 = d3.map();
queue()
.defer(d3.json, "url to topo.json")
.defer(d3.csv, "url to danger.csv", function(d) {dangerByISO3.set(d.iso, +d.level);})
.await(ready);
function ready(error, world) {
//You now have world as your available topojson
//And you have dangerByISO3 as your danger level hash
//You can lookup a danger level by dangerByISO3.get(ISO3 code)
}
কোড ওয়াকথ্রু
var dangerByISO3 = d3.map();
প্রথমে আপনি একটি d3.map () অবজেক্ট তৈরি করুন যা আপনার কী হ্যাশ হিসাবে কাজ করবে এবং এটিকে ভেরিয়েবল বিপদবাইএসআই 3 এ সংরক্ষণ করবে 3
queue()
সমান্তরাল লোডিংয়ের জন্য সারি ব্যবহার করুন।
.defer(d3.json, "url to topo.json")
অপেক্ষা করার ফাংশনে (ত্রুটির পরে) প্রথম পাস করার জন্য আপনার টপোজসনটি লোড করুন। শৈলীটি এখানে নোট করুন যেখানে এটি একটি শৃঙ্খলাবদ্ধ ফাংশন রয়েছে queue()
, তবে একটি পৃথক লাইনে তালিকাভুক্ত করা হয়েছে (কোনও সমাপ্তি সেমিকোলন নেই queue()
)।
.defer(d3.csv, "url to danger.csv", function(d) {dangerByISO3.set(d.iso, +d.level);})
এখানে দুটি জিনিস ঘটছে। প্রথমে, আপনি অপেক্ষার ফাংশনে যাওয়ার জন্য আপনার দ্বিতীয় যুক্তি হিসাবে বিপদ। সিএসভি লোড করছেন। আপনি নীচে দেখতে পাবেন, এই যুক্তি আসলে ব্যবহার করা হয় না। পরিবর্তে, একটি মূল্যায়নকারী যুক্তি লোড ফাংশন, d3.csv সরবরাহ করা হয়। এই মূল্যায়নকারী সিএসভির প্রতিটি সারি প্রক্রিয়া করবে। এই ক্ষেত্রে, আমরা সেটটি ফাংশনটিকে বিপদবিসআইএসআই 3-তে কল করি যাতে একটি iso
চাবির প্রতিটি সংমিশ্রণের জন্য আমরা level
সেই কীটি দিয়ে যাওয়ার মান হিসাবে সেট করি । +d.level
স্বরলিপি ইউনারী ব্যবহার +
একটি সংখ্যা d.level মান বাধ্য করতে।
.await(ready);
উভয় ডেটা উত্স লোড হয়ে গেলে এগুলি ফাংশনে দুটি পৃথক যুক্তি হিসাবে পাস করা হয় ready()
। কলব্যাকের প্রথম তর্কটি সর্বদা প্রথম ত্রুটি যা ঘটেছিল is যদি কোনও ত্রুটি না ঘটে তবে নালটি প্রথম যুক্তি হিসাবে পাস করা হবে। দ্বিতীয় যুক্তি হ'ল প্রথম ডেটা উত্স (প্রথম কার্যের ফলাফল) এবং তৃতীয় যুক্তি দ্বিতীয় ডেটা উত্স (দ্বিতীয় কার্যের ফলাফল)।
function ready(error, world) {...}
এটি কলব্যাক ফাংশন ready()
। প্রথমে আমরা error
যুক্তিটি গ্রহণ করি যা দুটি লোডিং কার্য সফলভাবে সম্পন্ন হলে (আপনার ত্রুটিগুলি ধরতে এবং পরিচালনা করার জন্য ভাষাটি যুক্ত করা উচিত) বাতিল হওয়া উচিত। এরপরে আমরা টপোজসন ডেটাটিকে অবজেক্ট হিসাবে নিই countries
। এই ডেটাটি ফাংশনের শরীরে এমন কিছু দিয়ে প্রক্রিয়া করা উচিত .data(topojson.feature(world,world.objects.countries).features)
। যেহেতু ready()
তৃতীয় যুক্তি গ্রহণ করে না, দ্বিতীয় কার্যের ফলাফল, আমাদের সিএসভি সহজভাবে বাতিল করা হয়। আমরা এটি কেবল কী হ্যাশ তৈরি করতে ব্যবহার করেছি এবং এর পরে এর প্রয়োজন নেই।