Cara menggunakan D3.V3.MIN.JS pada JavaScript

Cara menggunakan D3.V3.MIN.JS pada JavaScript

D3.js adalah library JavaScript untuk memanipulasi dokumen berdasarkan data. D3 membantu Anda membawa data ke kehidupan menggunakan HTML, SVG, dan CSS. Penekanan D3 pada standar web memberikan kemampuan penuh dari browser modern tanpa mengikat diri untuk kerangka proprietary, menggabungkan komponen visualisasi yang kuat dan pendekatan data-driven untuk manipulasi DOM.

Download versi terbaru (4.2.3) di sini:

  • d3.zip

Untuk link langsung ke rilis terbaru, menyalin cuplikan ini:

<script src="https://d3js.org/d3.v4.min.js"></script>

#Pendahuluan

D3 memungkinkan Anda untuk mengikat data yang sewenang-wenang dengan Document Object Model (DOM), dan kemudian menerapkan transformasi data untuk dokumen. Misalnya, Anda dapat menggunakan D3 untuk menghasilkan sebuah tabel HTML dari array angka. Atau, menggunakan data yang sama untuk membuat SVG bar chart interaktif dengan transisi yang halus dan interaksi.

D3 bukanlah kerangka monolitik yang berusaha untuk memberikan setiap fitur dibayangkan.Sebaliknya, D3 memecahkan inti dari masalah: efisien manipulasi dokumen berdasarkan data. Hal ini untuk menghindari representasi eksklusif dan memberi fleksibilitas yang luar biasa, memperlihatkan kemampuan penuh dari standar web seperti HTML, SVG, dan CSS. Dengan overhead minimal, D3 sangat cepat, mendukung dataset besar dan perilaku dinamis untuk interaksi dan animasi. Gaya fungsional D3 memungkinkan penggunaan kembali kode melalui beragam koleksi komponen danplugin .

#Seleksi

Memodifikasi dokumen menggunakan API W3C DOM membosankan: nama metode yang verbose, dan pendekatan penting membutuhkan iterasi manual dan pembukuan negara sementara. Misalnya, untuk mengubah warna teks dari elemen ayat:

var paragraphs = document.getElementsByTagName("p");
for (var i = 0; i < paragraphs.length; i++) {
  var paragraph = paragraphs.item(i);
  paragraph.style.setProperty("color", "white", null);
}

D3 menggunakan pendekatan deklaratif, beroperasi di set sewenang-wenang node disebut pilihan .Misalnya, Anda dapat menulis ulang loop di atas sebagai:

d3.selectAll("p").style("color", "white");

Namun, Anda masih dapat memanipulasi node individu yang diperlukan:

d3.select("body").style("background-color", "black");

Penyeleksi didefinisikan oleh API W3C pemilih dan didukung secara native oleh browser modern.Mundur-kompatibilitas untuk browser lama dapat diberikan oleh Sizzle . Contoh di atas pilih node dengan nama tag ( "p"dan "body", masing-masing). Elemen dapat dipilih dengan menggunakan berbagai predikat, termasuk penahanan, nilai atribut, kelas dan ID.

D3 menyediakan berbagai metode untuk bermutasi node: pengaturan atribut atau gaya; mendaftar acara pendengar; menambahkan, menghapus atau menyortir node; dan mengubah HTML atau teks konten. Ini cukup untuk sebagian besar kebutuhan. akses langsung ke DOM yang mendasari juga mungkin, karena setiap pilihan D3 hanyalah sebuah array dari node.

#Dinamik

Pembaca akrab dengan kerangka DOM lain seperti jQuery atau Prototype harus segera mengenali kemiripan dengan D3. Namun gaya, atribut, dan properti lainnya dapat ditentukan sebagai fungsi data di D3, bukan hanya konstanta sederhana. Meskipun kesederhanaan jelas mereka, fungsi-fungsi ini dapat sangat kuat; yang d3.geo.pathfungsi, misalnya, proyek koordinat geografis ke SVG jalur data . D3 menyediakan banyak fungsi built-in dapat digunakan kembali dan pabrik fungsi, sepertiprimitif grafis untuk daerah, jalur dan pie chart.

Misalnya, untuk secara acak warna paragraf:

d3.selectAll("p").style("color", function() {
  return "hsl(" + Math.random() * 360 + ",100%,50%)";
});

Untuk nuansa alternatif abu-abu bahkan dan node aneh:

d3.selectAll("p").style("color", function(d, i) {
  return i % 2 ? "#fff" : "#eee";
});

Sifat dihitung sering mengacu pada data terikat. Data ditentukan sebagai sebuah array nilai, dan setiap nilai dilewatkan sebagai argumen pertama ( d) fungsi seleksi. Dengan default bergabung-dengan-indeks, elemen pertama dalam array data akan diteruskan ke node pertama dalam seleksi, elemen kedua ke node kedua, dan seterusnya. Misalnya, jika Anda mengikat array nomor ke elemen paragraf, Anda dapat menggunakan nomor ini untuk menghitung ukuran font yang dinamis:

d3.selectAll("p")
  .data([4, 8, 15, 16, 23, 42])
    .style("font-size", function(d) { return d + "px"; });

Setelah data telah terikat dokumen, Anda dapat menghilangkan dataoperator, D3 akan mengambil data yang sebelumnya terikat. Hal ini memungkinkan Anda untuk menghitung ulang properti tanpa rebinding.

#Masukkan dan Keluar

Menggunakan D3 masukkan dan keluar pilihan, Anda dapat membuat node baru untuk data yang masuk dan menghapus node keluar yang tidak lagi diperlukan.

Ketika data terikat untuk pilihan, setiap elemen dalam array data dipasangkan dengan node yang sesuai dalam pemilihan. Jika ada lebih sedikit node dari data, elemen data tambahan membentuk memasukkan pilihan, yang dapat Anda instantiate dengan menambahkan ke enterseleksi. Sebagai contoh:

d3.select("body")
  .selectAll("p")
  .data([4, 8, 15, 16, 23, 42])
  .enter().append("p")
    .text(function(d) { return "I’m number " + d + "!"; });

Memperbarui node default pilihan-hasil dataoperator. Jadi, jika Anda lupa tentang masuk dan keluar pilihan, Anda akan secara otomatis memilih hanya unsur-unsur yang terdapat data yang sesuai. Pola umum adalah untuk memecahkan seleksi awal menjadi tiga bagian: kelenjar update untuk memodifikasi, node masuk untuk menambahkan, dan node keluar untuk menghapus.

// Update…
var p = d3.select("body")
  .selectAll("p")
  .data([4, 8, 15, 16, 23, 42])
    .text(function(d) { return d; });

// Enter…
p.enter().append("p")
    .text(function(d) { return d; });

// Exit…
p.exit().remove();

Dengan penanganan tiga kasus ini secara terpisah, Anda menentukan tepatnya yang operasi berjalan pada node. Hal ini meningkatkan kinerja dan memberikan kontrol yang lebih transisi.Misalnya, dengan grafik bar Anda mungkin menginisialisasi memasuki bar dengan menggunakan skala tua, dan kemudian transisi memasuki bar dengan skala baru bersama dengan memperbarui dan keluar bar.

D3 memungkinkan Anda mengubah dokumen berdasarkan data; ini mencakup menciptakan dan menghancurkan elemen. D3 memungkinkan Anda untuk mengubah dokumen yang ada dalam menanggapi interaksi pengguna, animasi dari waktu ke waktu, atau pemberitahuan bahkan asynchronous dari pihak ketiga. Pendekatan hybrid ini bahkan mungkin, di mana dokumen tersebut awalnya diberikan pada server, dan diperbarui pada klien melalui D3.

#Transformasi, tidak Representasi

D3 tidak memperkenalkan representasi visual baru. Tidak seperti Pengolahan , Raphaël , atauProtovis , kosakata D3 untuk tanda grafis berasal langsung dari standar web: HTML, SVG, dan CSS.Misalnya, Anda dapat membuat elemen SVG menggunakan D3 dan gaya mereka dengan stylesheet eksternal. Anda dapat menggunakan efek filter komposit, stroke putus-putus dan kliping. Jika vendor browser memperkenalkan fitur baru besok, Anda akan dapat menggunakan mereka segera-ada update toolkit diperlukan. Dan, jika Anda memutuskan di masa depan untuk menggunakan toolkit selain D3, Anda dapat mengambil pengetahuan Anda tentang standar dengan Anda!

Terbaik dari semua, D3 mudah untuk debug menggunakan built-in inspektur elemen browser: node yang Anda memanipulasi dengan D3 persis orang-orang bahwa browser mengerti native.

#Transisi

Fokus D3 pada transformasi meluas secara alami untuk transisi animasi. Transisi secara bertahap interpolasi gaya dan atribut dari waktu ke waktu. Tweening dapat dikontrol melalui fungsi pelonggaran seperti "elastis", "kubik-in-out" dan "linear". Interpolators D3 mendukung kedua primitif, seperti nomor dan nomor tertanam dalam string (ukuran font, data jalur, dll ), dan nilai-nilai majemuk. Anda bahkan dapat memperpanjang registry interpolator D3 untuk mendukung sifat kompleks dan struktur data.

Misalnya, memudar latar belakang halaman untuk hitam:

d3.select("body").transition()
    .style("background-color", "black");

Atau, untuk mengubah ukuran lingkaran di peta simbol dengan penundaan terhuyung:

d3.selectAll("circle").transition()
    .duration(750)
    .delay(function(d, i) { return i * 10; })
    .attr("r", function(d) { return Math.sqrt(d * scale); });

Dengan memodifikasi hanya atribut yang benar-benar berubah, D3 mengurangi overhead dan memungkinkan kompleksitas grafis yang lebih besar pada frame rate yang tinggi. D3 juga memungkinkan urutan transisi kompleks melalui peristiwa. Dan, Anda masih dapat menggunakan transisi CSS3; D3 tidak menggantikan toolbox browser, tetapi menghadapkan dengan cara yang lebih mudah digunakan.