Dalam artikel ini, saya akan membimbing anda melalui penciptaan visualisasi data, iaitu Kenderaan AS mengimbas kembali untuk bulan Januari 2015, menggunakan perpustakaan Dimple.js JavaScript yang dibina di atas D3.Js.
Takeaways Key
- Visualisasi data boleh dibuat menggunakan JavaScript dan perpustakaan Dimple.js, yang dibina di atas D3.js, untuk membentangkan jumlah data yang besar dengan cara yang menarik.
- Proses ini melibatkan menetapkan matlamat, bekerja dengan data, dan mengikat data ke objek D3; Dalam kes ini, carta bar yang menggambarkan jumlah kenderaan yang ditarik balik oleh Maker untuk Januari 2015 telah diwujudkan.
- Pembersihan dan penyediaan data adalah penting untuk visualisasi data yang berjaya; Ini termasuk mengekstrak data yang relevan, mengurangkan lajur ke subset yang tersedia, dan mengumpulkan data secara manual berdasarkan kriteria tertentu.
- Perpustakaan D3.JS menyediakan sokongan out-of-the-box untuk pelbagai format fail data seperti CSV, TSV, atau JSON dan boleh mengubahnya menjadi array JavaScript untuk pemprosesan.
- Ciri -ciri tambahan seperti petua, peralihan estetik, dan manipulasi label boleh ditambah untuk meningkatkan visualisasi data dan interaksi pengguna.
NHTSA
/odi menyediakan fail ingat (yang boleh diakses melalui laman web mereka) yang mengandungi semua kempen kecacatan dan pematuhan yang berkaitan dengan keselamatan NHTSA sejak tahun 1967. Matlamat kami adalah untuk mengekstrak data untuk bulan tertentu ( Januari 2015), dan untuk membuat carta bar daripadanya, menggambarkan jumlah kenderaan yang ditarik balik oleh pembuat. Tonton Visualisasikan Data dengan D3.js Menggambarkan data anda dengan javascript
Tonton kursus ini Tonton kursus ini
inilah yang akan kita hadapi dengan:

Bekerja dengan data
hanya menyimpan data yang kita perlukan
Semua fail yang disebutkan dalam bahagian ini boleh didapati di repo GitHub kami.
Fail asal flat_rcl.txt (pautan) adalah fail nilai yang dipisahkan tab yang mengandungi lot data-109,682 rekod tepat. Terdapat fail yang disertakan rcl.txt (pautan) yang memperincikan lajur yang berkaitan dengan data ini.
kerana kami hanya berminat dengan data untuk Januari 2015 -atau sebaliknya rekod yang mana tarikh penciptaan rekod adalah Januari 2015 -rekod lain boleh dikeluarkan. Untuk melakukan ini, saya menggunakan program Spreadsheet OpenOffice Calc (walaupun perisian spreadsheet lain akan mencukupi). Fail yang dihasilkan, rcl_january_2015.csv (pautan) hanya mengira 201 rekod.
sekarang kita perlu mengurangkan lajur ke subset yang tersedia, iaitu:
Tarikh Penciptaan Rekod, Pembuat, Model, Tahun Model, Tarikh Mulakan Pembuatan, Tarikh Akhir Pembuatan, Potensi Bilangan Unit yang terjejas, Ringkasan Kecacatan, Ringkasan Akibat, dan Ringkasan Pembetulan. Kami kemudian boleh menambah nama lajur ke baris pertama fail CSV yang dihasilkan, rcl_january_2015_clean.csv (pautan).
Ini memberi kita data mentah yang kita perlukan untuk visualisasi kita.
Buat struktur data
Sekarang kita perlu mengumpulkan semula secara manual oleh pembuat, menggabungkan rekod -rekod yang mempunyai kecacatan yang sama. Kita perlu memastikan bahawa rekod gabungan disusun mengikut tarikh, kemudian dengan model dan bahawa mereka mempunyai jumlah potensi kumulatif jumlah unit yang terjejas.
Kami akan menggunakan struktur data JSON untuk kumpulan ini.
3 Ini boleh dikelompokkan menjadi satu baris yang menyatakan bahawa J4500 MCI dari tahun 2013, 2014 dan 2015, yang mempunyai tahun yang sama pembuatan, membentangkan kecacatan yang sama. Bilangan potensi unit yang terjejas sudah kumpulan ketiga -tiga model ini bersama -sama dalam dataset.inilah struktur data JSON yang akan kita gunakan:
<span>{ </span> <span>"items": [ </span> <span>{ </span> <span>"item": { </span> <span>"date": "", </span> <span>"models": [ </span> <span>"" </span> <span>], </span> <span>"units": "", </span> <span>"defect": "", </span> <span>"consequence": "", </span> <span>"corrective": "" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>Setelah melancarkan proses ini (dan melarikan diri dari sebut harga ganda), kami kini mempunyai fail CSV
rcl_january_2015_json.csv (pautan). Demi keringkasan, contoh kerja kami akan menunjukkan hanya tiga pembuat pertama fail asal (3 dari 46).
mengikat data ke objek D3D3 menyediakan sokongan out-of-the-box untuk format fail data, seperti CSV, TSV, atau JSON. Panggilan Ajax dilakukan untuk mengambil fail, maka ia dihuraikan dan diubah menjadi array JavaScript. Fail CSV yang kami buat boleh diambil dengan kod berikut:
d3<span>.csv("RCL.csv", function (data) { </span> <span>// process the data </span><span>});</span>kita juga boleh menentukan array JavaScript secara langsung dalam kod, yang akan kita lakukan di sini untuk tujuan demo Codepen kami. Struktur data telah disimpan sedekat mungkin ke array D3 akan dibuat dari fail CSV.
data <span>= [ </span> <span>{ </span> <span>'Record creation date':'20150105', </span> <span>'Maker':'MCI', </span> <span>'Potential number of units affected':'109', </span> <span>'JSON data': '{ </span> <span>"items":[ </span> <span>{ </span> <span>"item": { </span> <span>"date":"January, 5 2015", </span> <span>"models":[ </span> <span>"J4500 (years 2013, 2014, 2015) ..." </span> <span>], </span> <span>"units":"109", </span> <span>"defect":"...", </span> <span>"consequence":"...", </span> <span>"corrective":"..." </span> <span>} </span> <span>} </span> <span>] </span> <span>}' </span> <span>}, </span> <span>... </span><span>];</span>Dan sekarang, mari kita menyelam!
<span><span><span><div> id<span>="RecallsChart"</span>><span><span></span></span> </div></span>></span> </span><span><span><span><div> id<span>="RecallDetails"</span>><span><span></span></span> </div></span>></span></span>HTML adalah mudah: dua div, satu untuk carta (ingat semula), yang lain untuk memaparkan butiran tambahan jika pengguna melayari salah satu bar (ingat semula).
<span>{ </span> <span>"items": [ </span> <span>{ </span> <span>"item": { </span> <span>"date": "", </span> <span>"models": [ </span> <span>"" </span> <span>], </span> <span>"units": "", </span> <span>"defect": "", </span> <span>"consequence": "", </span> <span>"corrective": "" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
kita mula -mula menambah objek SVG ke elemen Div, merujuknya dengan IDnya. Kemudian kami menghubungkan data kami ke carta baru kami, yang akan diberikan dalam SVG. Akhirnya, kami menetapkan batas carta secara manual untuk meletakkannya dengan betul dalam div induknya.
d3<span>.csv("RCL.csv", function (data) { </span> <span>// process the data </span><span>});</span>
kami menetapkan paksi x carta ke medan pembuat data kami-kami menggunakan kaedah addCategoryaxis sebagai pembuatnya membentuk data kategori. Kami memerintahkan pembuat mengikut abjad menggunakan kaedah addorderrule dan menyembunyikan tajuk paksi-x (yang akan menjadi pembuat), kerana nama pembuatnya adalah jelas.
data <span>= [ </span> <span>{ </span> <span>'Record creation date':'20150105', </span> <span>'Maker':'MCI', </span> <span>'Potential number of units affected':'109', </span> <span>'JSON data': '{ </span> <span>"items":[ </span> <span>{ </span> <span>"item": { </span> <span>"date":"January, 5 2015", </span> <span>"models":[ </span> <span>"J4500 (years 2013, 2014, 2015) ..." </span> <span>], </span> <span>"units":"109", </span> <span>"defect":"...", </span> <span>"consequence":"...", </span> <span>"corrective":"..." </span> <span>} </span> <span>} </span> <span>] </span> <span>}' </span> <span>}, </span> <span>... </span><span>];</span>
Kami menetapkan paksi y carta ke bilangan potensi unit yang terjejas dalam data kami. Kita boleh menggunakan kaedah addMeasureaxis di sini, yang mentakrifkan paksi linear dari nilai yang diberikan, tetapi sebagai kemenangan pembuat mempunyai lebih daripada 20 kali bilangan potensi unit yang terjejas daripada sama ada MCI atau Thor, lajur yang dihasilkan akan kerdil kedua -dua orang lain . Dalam kes ini, skala logaritma memberikan lebih banyak ruang untuk nilai yang lebih kecil, jadi kami menggunakan kaedah addlogaxis, yang mungkir ke pangkalan 10.
<span><span><span><div> id<span>="RecallsChart"</span>><span><span></span></span> </div></span>></span> </span><span><span><span><div> id<span>="RecallDetails"</span>><span><span></span></span> </div></span>></span></span>
Sekarang kita telah menentukan paksi kita, kita boleh mengikat mereka bersama -sama untuk menjadikan grafik. Untuk ini kami memilih carta bar melalui dimple.plot.bar, dan kami mengikatnya ke medan data Maker. Elemen array kedua, data JSON, akan mengikat bahagian JSON dari data kami ke setiap bar dan membolehkan kami mengakses data yang betul apabila melayang di atas bar dengan tetikus.
<span>var svg = dimple.newSvg("#RecallsChart", 800, 560); </span><span>var myChart = new dimple<span>.chart</span>(svg, data); </span>myChart<span>.setBounds(60, 30, 710, 355)</span>
Secara lalai, tooltips dipaparkan apabila melayang dengan tetikus di atas unit plot (di sini, bar) dan tunjukkan paksi dan data siri. Dalam kes kami: pembuat (nilai paksi x), bilangan potensi unit yang terjejas (nilai paksi y), dan nilai teks biasa data JSON kami.
Fungsi GetToolTiptext terlalu banyak di sini untuk memproses data JSON dan memaparkannya di Div lain ke sisi. Ia mengembalikan pelbagai data yang ingin kami paparkan sebagai tooltip, ia Format nombor bahasa Inggeris generik melalui kaedah JavaScript Tolocalestring terbina dalam).
Tetapi mari kita kembali ke parsing data JSON.
dua bidang agregat yang kami akses (Aggfield [0] dan Aggfield [1]) sepadan dengan pelbagai bidang data yang kami tetapkan sebagai siri (["pembuat", "data json"]), dengan Aggfield sendiri menjadi harta objek elemen yang mendasari.
Kami menghuraikan tali JSON dengan fungsi parsejson JQuery, menetapkan pelbagai tajuk panjang penuh yang sepadan dengan kekunci objek JSON kami, kemudian, dengan melelehkan objek JSON, kami membina rentetan HTML untuk ditambah ke Div dengan ID dengan ID dengan ID dengan ID dengan ID dengan ID RecreakDetails.
<span>var x = myChart.addCategoryAxis("x", "Maker"); </span>x<span>.addOrderRule("Maker"); </span>x<span>.title = '';</span>
kami akhirnya melukis carta dengan peralihan estetik menggunakan kemudahan elastik dengan kelewatan satu saat.
myChart<span>.addLogAxis("y", "Potential number of units affected");</span>
Adakah saya katakan akhirnya? Nah, di sini kita menambah satu lagi helah estetik ke label paksi-x.
Secara lalai, label paksi x ditulis secara mendatar. Tetapi mereka boleh dengan mudah bertindih, jadi kami akan menulis secara menegak. Di sinilah pendedahan Dimple terhadap objek D3 yang mendasari berguna. Sila ambil perhatian bahawa kita hanya boleh mengubahnya sebaik sahaja carta telah ditarik, oleh itu selepas panggilan myChart.Draw ().
Untuk melakukan ini, kita mula-mula memilih setiap teks label, atau sebaliknya bentuk SVG yang sepadan yang dikaitkan dengan paksi X untuk setiap label. Kaedah getBbox () tergolong dalam interfacesvglocatable dan mengembalikan objek svGrect yang mentakrifkan kotak sempadan, mendedahkan koordinat, ketinggian dan lebarnya. Kami kemudian melakukan putaran kotak SVG, dan terjemahan menegak sedikit untuk meletakkannya lebih dekat dengan garis paksi-x.
dan inilah hasil akhir:
Lihat kenderaan pena yang ditarik balik untuk Januari 2015 oleh SitePoint (@SitePoint) pada Codepen.
Lebar pen ini telah dikurangkan agar sesuai dengan artikel itu. Anda dapat melihat codepen asal di sini
Kesimpulan
Dalam artikel ini kita telah melihat bagaimana untuk membersihkan dan menyediakan data untuk visualisasi data, khususnya menentukan struktur data untuk memadankan hasil akhir yang kita ada dalam fikiran. Kami menggunakan kedua -dua perpustakaan dimple.js dan d3.js, dengan beberapa panggilan terhad kepada jQuery (kebanyakannya berkaitan dengan pemprosesan JSON). Kami telah menarik carta bar dari data kami, dengan sedikit interaksi penerokaan dengan melampaui ciri tooltip Dimple. Kami juga telah mengakses objek D3 yang mendasari untuk memanipulasi label paksi x.
Sebagai nota sampingan, SVG kini disokong secara meluas, tetapi amalan yang baik untuk menyemaknya terlebih dahulu (dengan Modernizr misalnya), dan untuk menyediakan dengan sandaran seperti imej PNG di mana sahaja diperlukan. Sudah tentu, pemuatan bersyarat d3.js dan dimple.js juga perlu diambil kira.
Atas ialah kandungan terperinci Buat Visualisasi Data dalam JavaScript Menggunakan Dimple dan D3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.

Cara Menghantar Pemberitahuan Tugas di Quartz terlebih dahulu Apabila menggunakan pemasa kuarza untuk menjadualkan tugas, masa pelaksanaan tugas ditetapkan oleh ekspresi cron. Sekarang ...

Cara mendapatkan parameter fungsi pada rantaian prototaip dalam JavaScript dalam pengaturcaraan JavaScript, pemahaman dan memanipulasi parameter fungsi pada rantaian prototaip adalah tugas yang biasa dan penting ...

Analisis sebab mengapa kegagalan anjakan gaya dinamik menggunakan vue.js dalam pandangan web applet weChat menggunakan vue.js ...

Bagaimana untuk membuat permintaan serentak untuk pelbagai pautan dan hakim mengikut urutan untuk mengembalikan hasil? Dalam skrip Tampermonkey, kita sering perlu menggunakan pelbagai rantai ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan