Pada kali ini kelompok saya akan mempraktekan penggunaan d3.js, dan kelompok saya akan menggunakan data dari website https://www.kaggle.com/beyondbeneath/geolocation-visualisations/data dan data yang kelompok saya ambil merupakan data events.csv dan phone_brand_device_model.csv. Pada kedua data tersebut yang kami ambil adalah data dari latitude dan longitude dari events.csv dan data model device yang didapat dari phone_brand_device_model.csv .
Data tersebut akan diproyeksikan kedalam map dan akan menghasilkan titik-titik koordinat yang akan menampilkan nama dari model device dari data tersebut. berikut ini merupakan source code yang kita gunakan untuk menampilkan map
Index.html
<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>D3 china map</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.1.10/d3.js"></script>
  <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css'><link rel="stylesheet" href="./style.css">
</head>
<body>
&nbsp; Map China
<div id="china-map"></div>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script  src="./script.js"></script>
</body>
</html>

script.js

var width  = 1024;
var height = 768;

var svg = d3.select("#china-map")
    .append("svg")
    .attr("width", "100%")
    .attr("height", height)
    .call(d3.zoom().on("zoom", function () {
    svg.attr("transform", d3.event.transform)}))

var projection = d3.geo.mercator()
    .center([107, 31])
    .scale(700)
    .translate([width/2, height/2]);

var path = d3.geo.path()
    .projection(projection);

d3.json("china_map.json", function(error, root) {
  if (error) return console.error(error);

  var tooltip = d3.select("body")
    .append("div")
    .attr("class","tooltip")
    .style("opacity", 0);

  svg.selectAll("path")
    .data(root.features)
    .enter()
    .append("path")
    .attr("stroke","#000")
    .attr("stroke-width",1)
    .attr("fill", function(d,i){
      return "gray";
    })

    .attr("d", path )
    .on("mouseover",function(d,i){
      d3.select(this).attr("fill","#cccccc");
      tooltip.transition()
        .duration(200)
        .style("opacity", .9);

      tooltip.html()
        .style("left", (d3.event.pageX) + "px")
        .style("top", (d3.event.pageY - 28) + "px");
    })

d3.json("data.json", function(data){
  console.log(data)

svg.selectAll("circle")
  .data(data)
  .enter().append("circle")
  .attr("r",6)
  .attr("cx",function (d) {
  var kordinat = projection ([d.longitude, d.latitude])
  console.log(kordinat)
  return kordinat[0];
})

  .attr("cy",function(d){
  var kordinat = projection ([d.longitude, d.latitude])
  console.log(kordinat)
  return kordinat[1];
})

  .style('opacity', '.5')
  .on('mouseover', function(d, i) {
     tooltip.html('No: ' + d.event_id +
                  '\n Device ID: ' + d.device_id + 
                  '\n Time Stamp: ' + d.timestamp + 
                  '\n Longitude: ' + d.longitude + 
                  '\n Latitude: ' +  d.latitude + 
                  '\n Tipe HP: ' + d.device_model)

  .style('text-align', 'align left')
  .style('left', d3.event.pageX + 'px')
  .style('top', d3.event.pageY + 'px')
  .style('display', 'block')
  .style('opacity', 1.7);
})

  .on('mouseout', function(d) {
       tooltip
  .style('display', 'none');
});

  });

});    
style.css

svg {
  background-color: PowderBlue;
}

body{
 background: #B0DFE5;
 color: #660d00;
  font: bold large serif;
  font-size: 50px;
}

path {
  fill: SeaGreen;
  stroke: #660d00;
  stroke-width: 0.5px;
}

.tooltip {
  background-color: yellow;
  position: absolute;
  padding: 0 10px;
  white-space: pre-line;
  border-radius: 10px;
}

Hasil :





Python adalah bahasa pemrograman interpretatif multiguna. Tidak seperti bahasa lain yang susah untuk dibaca dan dipahami, python lebih menekankan pada keterbacaan kode agar lebih mudah untuk memahami sintaks. Hal ini membuat Python sangat mudah dipelajari baik untuk pemula maupun untuk yang sudah menguasai bahasa pemrograman lain.
Bahasa ini muncul pertama kali pada tahun 1991, dirancang oleh seorang bernama Guido van Rossum. Sampai saat ini Python masih dikembangkan oleh Python Software Foundation. Bahasa Python mendukung hampir semua sistem operasi, bahkan untuk sistem operasi Linux, hampir semua distronya sudah menyertakan Python di dalamnya.
Dengan kode yang simpel dan mudah diimplementasikan, seorang programmer dapat lebih mengutamakan pengembangan aplikasi yang dibuat, bukan malah sibuk mencari syntax error.
print("Python sangat simpel")
Hanya dengan menuliskan kode print seperti yang diatas, anda sudah bisa mencetak apapun yang anda inginkan di dalam tanda kurung (). Dibagian akhir kode pun, anda tidak harus mengakhirnya dengan tanda semicolon ;

Persiapan Alat untuk Belajar Pemrograman Python

Apa saja alat-alat yang harus dipersiapkan untuk belajar pemrograman python?
  1. Python: Interpreter yang menerjemahkan bahasa python ke bahasa mesin, sehingga program bisa dijalankan.
  2. Teks Editor/IDE: Program yang digunakan untuk menulis kode.

Bagaiaman cara install Python?

Bagi pengguna Linux, Python tidak perlu diinstal. Karena Sebagian besar distro Linux sudah menyediakannya secara default. Untuk mengeceknya, silahkan ketik perintah python --version di terminal.
$ python --version
Python 2.7.12

Python Versi 2 vs Python Versi 3

Ada dua versi Python yang beredar saat ini, yaitu versi 2 dan 3. perbedaanya Python versi 2 merupakan versi yang banyak digunakan saat ini, baik dilingkungan produksi dan pengembangan. Sementara Python versi 3 adalah pengembangan lanjutan dari versi 2. Python 3 memiliki lebih banyak fitur dibandingkan Python 2. Untuk membuka Python 2 kita hanya menggunakan perintah python saja, sedangkan Python 3 menggunakan perintah python3.
Python 2 dan Python 3
Untuk yang baru belajar saya sarankan menggunakan versi 2. Sementara untuk yang sudah mahir, bisa mencoba yang versi 3.

Siapkan Teks Editor/IDE untuk Menulis Kode

Teks editor yang digunakan untuk menulis program python bisa apa saja. Bahkan Notepad pun bisa. Pada Linux, banyak sekali pilihan teks editor yang bisa digunakan. Selain teks editor, kita juga bisa menggunakan IDE (Integereted Development Environtment). Namun, nanti kita akan bahas belakangan. Untuk saat ini kita pakai teks editor saja dulu, biar lebih paham konsep pemrograman.

Mengenal Mode Interaktif Python

Mode interaktif merupakan fasilitas/fitur yang disediakan oleh Python sebagai tempat menulis kode secara interaktif. Fitur ini dikenal juga dengan Shell, Console, REPL (Read–Eval–Print Loop), interpreter, dsb. Cara membuka mode interaktif adalah dengan mengetik perintah python pada terminal.
Mode Interaktif Python
untuk keluar dari mode interaktif tekan Ctrl+d atau ketik perintah exit().
Tanda >>>, artinya python siap menerima perintah.
Terdapat juga tanda ... yang berarti secondary prompt atau sub prompt, biasanya muncul saat membuat blok kode dan menulis perintah tunggal dalam beberapa baris.
Mari kita coba memberikan perintah print, perintah ini berfungsi untuk mencetak teks ke layar.
Cobalah tulis print "Hello World" kemudian tekan Enter.
Program Hello world dengan Python
Perintah yang kita tulis langsung dieksekusi dan ditampilkan hasilnya. Inilah mode interaktif, setiap kode atau perintah yang diketik akan direspon langsung oleh python. Kita bisa memanfaatkan mode interaktif ini untuk:
  • Uji coba suatu fungsi;
  • Eksperimen modul tertentu;
  • Kalkulator;
  • Mencari bantuan tentang fungsi tertentu;
  • dll.
Hal yang perlu kita coba adalah mencari bantuan tentang fungsi tertentu, karena akan membantu sekali dalam mempelajari python. Ada dua fungsi yang digunakan untuk mencari bantuan:
  1. fungsi dir() untuk melihat fungsi apa saja yang tersedia pada sebuah modul;
  2. fungsi help() untuk membuka dokumentasi suatu fungsi.
Sebgai contoh, kita akan coba mencari tahu tentang penggunaan modul mathPertama kita impor dulu modulnya ke mode interaktif:
>>> import math
Setelah itu kita bisa melihat-lihat, fungsi apa saja yang tersedia di modul tersebut.
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
Lalu, kita bisa cari tahu cara penggunaan fungsi-fungsi tersebut dengan help()Misalkan kita ingin cari tahu cara penggunaan fungsi pow(), maka kita harus memberikan perintah help(math.pow).
Help on built-in function pow in module math:

pow(...)
    pow(x, y)

    Return x**y (x to the power of y).
(END)
*untuk keluar dari dokumentasi tekan q. Setelah itu, baru kita bisa pakai dan coba fungsinya.
Melihat bantuan dan dokumentasi
Program yang kita tulis dalam mode interaktif tidak akan disimpan. Setelah mode interaktif ditutup, program akan hilang. Karena itu, kita harus membuat skrip. Silahkan gunakan teks editor untuk menulis skrip seperti di bawah ini.
Program Python
Setelah itu simpan dengan nama hello_world.py
Simpan program python
Kemudian untuk menjalankan skripnya, gunakan perintah berikut:
python nama_skrip.py
Pastikan mengetik perintah tersebut pada direktori tempat menyimpan skripnya.
Program Hello World dengan python

Alur Kerja Pembuatan Program Python

Alur kerja program python
  1. Membuat skrip python dengan teks editor.
  2. Skrip python diterjemahkan ke dalam kode biner oleh (intepreter) python, sehingga komputer dapat mengerti arti perintah tersebut.
  3. Komputer mengerjakan perintah tersebut.

    
    WebGL (Web Graphics Library) adalah JavaScript API untuk rendering grafis 3D interaktif dan grafis 2D dalam browser web yang kompatibel tanpa menggunakan plug-in. WebGL terintegrasi sepenuhnya ke semua standar web browser yang memungkinkan penggunaan percepatan GPU fisika dan pengolahan gambar dan efek sebagai bagian dari kanvas halaman web. Elemen WebGL dapat dicampur dengan elemen HTML lainnya dan composited dengan bagian-bagian lain dari latar belakang halaman atau halaman. WebGL program terdiri dari kode kontrol ditulis dalam JavaScript dan kode shader yang dijalankan pada komputer Graphics Processing Unit (GPU). WebGL dirancang dan dipelihara oleh Kelompok Khronos non-profit.

    WebGL biasanya digunakan untuk desain web dan game 3D yang berbasis web. WebGL juga juga digunakan oleh beberapa peneliti untuk tujuan sains. Sebagai contoh, dalam buku yang berjudul "Cellular Automata", peneliti menggunakan WebGL untuk mensimulasikan alur Debris. Sedangkan pada paper "Visualization of molecular structures using state-of-the-art techniques in WebGL", peneliti mensimulasikan molekul didalamnya. NASA juga membangun aplikasi web yang interaktif yang disebut Experience Curiosity untuk merayakan ulang tahun ketiga dimana Curiosity Rover mendarat di Mars.

    WebGL didesain berdasarkan fungsi-fungsi yang ada pada OpenGL ES 2.0, kemudian dibangun dengan elemen HTML5 <canvas> dan diakses dengan menggunakan Document Object Model (DOM).

    WebGL berawal dari percobaan yang dilakukan oleh Vladimir Vukićevic ketika berada di Mozilla. Vukićevic pertama kali mendemonstrasikan prototipe Canvas 3D pada tahun 2006. Dipenghujung tahun 2007, Mozilla dan Opera mulai membangunnya secara terpisah. Baru pada awal 2009, Khoronos Group mulai serius dalam membangun project WebGL dengan kerjasama dengan berbagai perusahaan seperti Apple, Google, Mozilla, Opera dan lain-lain. Pada bulan Maret 2011, WebGL 1.0 akhirnya dirilis dengan kerja keras selama bertahun-tahun. Dengan dirilisnya WebGL, mulai banyak vendor aplikasi multimedia seperti Autodesk, Fusion 360, AutoCAD 360 antusias membangun porting aplikasinya agar WebGL semakin canggih.


     uDig adalah program perangkat lunak GIS yang diproduksi oleh komunitas yang dipimpin oleh perusahaan konsultan yang berbasis di Kanada, Refractions Research. Ini didasarkan pada platform Eclipse dan fitur GIS Open Source berlapis penuh. Ini ditulis dalam Java dan dirilis di bawah lisensi EPL dan BSD (sebelumnya di bawah GNU LGPL ). uDig memiliki panduan dalam Flash dan juga petunjuk mulai cepat bagi mereka yang ingin menyelesaikan versi lengkap untuk menulis plug-in atau berkontribusi pada versi utama.
     uDig dapat menggunakan GRASS untuk operasi vektor yang kompleks dan juga menyematkan JGRASS dan alat hidrologi khusus dari Horton Machine. Ini mendukung shapefile, PostGIS, WMS, dan banyak sumber data lainnya secara native. uDig umumnya digunakan sebagai kerangka kerja untuk membangun platform dan aplikasi GIS lainnya. Aplikasi semacam itu termasuk DIVA-GIS dan DEWS - Sistem Peringatan Dini Jauh untuk tsunami.

Fitur
  • Dibangun di Jawa, di bawah lingkungan Eclipse (Sebagai gvSIG).
  • Kebebasan untuk mengkonfigurasi antarmuka patut ditiru, karena bisa menyeret jendela hampir di mana saja, jalankan di latar belakang, tarik eksternal dan internal, kurangi tombol dan bebas memodifikasi tepi frame.
  • Kecepatan eksekusi sangat bagus (meski di Jawa, saya sudah mencobanya dari a Acer Aspire One, dengan Windows XP); Ini berjalan di Linux dan Mac, jelas dengan kinerja yang lebih baik.
  • Sedangkan untuk membaca format vektor, terbatas dengan file diskrit (tidak membaca dengan, kml, dxf, atau dwg) tetapi yang diasap (gml, xml). Satu-satunya tradisional yang dibaca adalah bentuk file.
  • Dengan gambar raster juga memiliki keterbatasan, namun Anda dapat tetap menggunakan layanan wms dan layanan online lainnya.
  • Adapun database itu sendiri adalah kuat, ArcSDE, DB2, MySQL, Oracle Spatial, PostgreSQL/ PostGIS dan WFS, jadi melalui beberapa ini bisa mengintegrasikan data vektor yang tidak diakses secara konvensional.
  • uDigGrid, skala bar dan legenda terintegrasi seolah-olah mereka adalah lapisan. Ini menarik karena mereka bukan fungsionalitas dari antarmuka penyebaran tetapi dari data. Meskipun konfigurasinya rumit (pada kesan pertama)
  • Sangat menarik bahwa alat ini biasanya dilengkapi dengan contoh terstruktur, yang mencakup komunitas Kanada dan basis data global kota, negara, zona waktu, dan citra satelit. Strategi ini sangat bagus untuk memahami kemampuan Anda ketika Anda melihatnya untuk pertama kalinya, yang harus mempertimbangkan program lain yang mengunduh, menginstal, dan menghasilkan pertanyaan besar.
  • Pencarian untuk pembaruan online adalah fitur praktis lain yang harus dipertimbangkan proyek lain. Dalam hal ini, agak mirip dengan gvSIG, ada penghalang di kesan pertama, dan itu adalah bahwa kekayaan yang ada di ekstensi tidak memiliki pemasaran yang cukup atau tidak memiliki benang merah yang mempromosikan kegunaannya (dan dalam hal ini resmi). Setidaknya, dengan pembaruan online ini (yang tidak memiliki gvSIG), setelah beberapa menit pengunduhan, saya dapat melihat banyak kemampuan yang diterima dalam ekstensi Rumput, JGrass, SEXANT, Mesin Horton dan Axios dalam aplikasi hidrologi, model 3D, GPS, raser dan interaksi vektor.



D3.js adalah library JavaScript yang dipakai untuk memanipulasi dokumen HTML dan menggambar diagram berdasarkan data yang diberikan. Library ini menggunakan HTML, CSS, dan SVG Untuk membuat representasi visual dari kumpulan data yang bisa dilihat diberbagai browser modern.
D3.js juga memiliki fitur untuk membuat diagram yang interaktif dengan animasi-animasi menarik.
Di tutorial ini kita akan mengenal konsep dasar penggunaan D3.js. Kita akan pelajari bagaimana menggunakannya dengan me-render sebuah diagram batang, elemen HTML dan SVG, serta menerapkan transformasi dan event ke diagram tersebut.

Mulai Menggunakan D3

Karena D3.js adalah library JavaScript, untuk memakainya kita cukup menulis baris berikut di dalam file HTML.

DOM Selection

Dengan D3.js kita bisa memanipulasi Document Object Model (DOM), yang artinya kita bsa memilih elemen dan memberikan berbagai jenis transformasi ke elemen tersebut.
Mari mulai dengan contoh sederhana dimana kita akan memakai D3 untuk memilih dan mengubah warna dan ukuran font tag heading.
Disini kita hanya menautkan mehod select() di objek d3 yang memilih elemen tertentu, dan diikuti dengan method style(). Di method style(), parameter pertama menentukan apa yang ingin diubah dan parameter kedua memberikan nilai yang baru. Berikut hasilnya:

Data Binding

Konsep berikutnya yang perlu dipelajari adalah data binding karena konsep ini sangat penting di D3. Dengan menggunakannya, kita bisa mengisi atau memanipulasi elemen DOM secara realtime.
di HTML kita, tambahkan sebuah tag <ul>:
Kita ingin mengisi unordered list tersebut dengan sebuah objek data. Berikut kode JavaScript-nya:
Pada kode JavaScript di atas, D3 membaca elemen <ul> dan seluruh elemen <li> di dalamnya menggunakan select() dan selectAll(). Agaknya aneh kita membaca elemen li yang belum kita tamahkan disana, tapi begitulah cara kerja D3.
Kita lalu mengirimkan data dengan method data(), dan memanggil enter() yang akan mengulangi (melakukan looping atau perulangan) method-method di bawahnya (append dan text) sampai isi arrray fruits habis di baca satu persatu.
Dengan kata lain, perintah tersebut, menambahkan sebuah <li> untuk setiap item di dalam array. Untuk setiap tag li, ia juga menambahkan teks didalamnya menggunakan mehod text(). Parameter d didalam text() adalah fungsi callback yang mengarah ke elemen di dalam array saat looping terjadi (apple, mango, dst satu persatu).
Berikut hasilnya:

Membuat Diagram Batang

D3 memungkinkan kita untuk membuat berbagai jenis diagram agar bisa merepresentasikan data dengan lebih efisien. Pada contoh di bawah, kita membuat diagram batang sederhana dengan D3.
Mari mulai dengan membuat tag SVG di HTML.
Lalu, kita tulis kode JavaScript yang kita butuhkan untuk merender diagram tersebut di tag <svg>:
Pada kode di atas, kita memiliki sebuah array yang berisi angka-angka untuk ditampilkan di diagram batang kita tadi. Setiap item di dalam array akan mengisi satu batang.
Setelah memilih elemen svg dan rect, kita mengirim data dengan method data() dan memanggil enter() untuk melakukan looping kode-kode di bawahnya sampai isi array habis di baca.
Untuk setiap item, kita menggambar sebuah kotak dan mengatur lebarnya sesuai dengan nilai yang dimiliki. Kita lalu mengatur tinggi setiap kotak dan untuk menghindari overlapping, kita memberikan padding dengan mengurangi barHeight sebesar 1.
Kita lalu memberikan sebuah transformasi agar kotak-kotak tersebut berada kotak sebelumnya. Fungsi transform() menerima fungsi callback yang mengambil data dan indeks data tersebut sebagai parameter. Kita memodifikasi nilai y kotak dengan mengalikan index dengan tinggi kotak.
Berikut hasilnya: