Saya ingin memvisualisasikan stempel waktu peristiwa di data saya menggunakan visualisasi seperti yang ditunjukkan di bawah ini:
Saya kira ini dapat dilakukan dengan beberapa cara berbeda dan dengan kurangnya pengalaman saya dengan D3, saya ingin mendengar rekomendasi pendekatan yang baik. Mungkinkah hal ini dapat dicapai dengan memanipulasi beberapa visualisasi umum dengan cara yang rumit?
EDIT: Berdasarkan masukan dari ee2Dev, saya akan membuat 4 baris, bukan 2, menangkap panggilan/teks masuk dan keluar secara terpisah. Mengenai perincian, akan lebih baik jika visualisasi dapat menangkap data satu minggu dalam interval 5 menit (satu pesan teks sama dengan 5 menit berbicara dan panggilan 48 menit akan dibulatkan menjadi panggilan 50 menit). Jumlahnya adalah 7*24*12 = 2016 kemungkinan interval, yang tampaknya masuk akal. Mungkin interval 10 menit akan lebih cocok daripada interval 5 menit, tapi saya rasa kodenya dapat dengan mudah disesuaikan untuk itu. Sesuatu yang belum saya tunjukkan adalah bagaimana seharusnya tengah malam ditandai untuk menunjukkan hari mana yang aktif dan mana yang tidak.
Di bawah ini adalah kode saya dan data sampel saya:
// Data:
timestamp (yyyy-MM-dd HH:mm),type
1/1/2015 10:12,inc_call
1/2/2015 10:12,inc_call
1/2/2015 10:12,out_text
1/3/2015 10:12,out_call
1/4/2015 10:12,inc_text
1/5/2015 10:12,inc_text
// Code
<!DOCTYPE html>
<meta charset="utf-8">
<style>
</style>
<body>
<script type="text/javascript" src="d3/d3.js"></script>
<script type="text/javascript" src="papaparse.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.tipsy.js"></script>
<link href="/idtipsy.css" rel="stylesheet" type="text/css" />
<script>
var width = 1000;
var height = 500;
var events;
var results = Papa.parse("events.csv", {
header: true,
download: true, // is needed even for local files as this interprets the input value as a path instead of simply the data
dynamicTyping: true,
delimiter: ",",
skipEmptyLines: true,
complete: function(results) {
events = results.data;
CreateVisualizationFromData();
}
});
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var total_interactions;
function CreateVisualizationFromData()
{
total_interactions = events.length;
console.log(total_interactions);
svg
.append("marker")
.attr("id", "arrowhead")
.attr("refX", 6 + 7)
.attr("refY", 2)
.attr("markerWidth", 6)
.attr("markerHeight", 4)
.attr("orient", "auto")
.append("path")
.attr("d", "M 0,0 V 4 L6,2 Z");
}