DC.js - Çizgi Grafik

Düz çizgilerle birbirine bağlanmış bir dizi veri noktası olarak bilgileri görüntülemek için bir çizgi grafiği kullanılır. Bir veri noktası, biri yatay eksen boyunca diğeri dikey eksen boyunca çizilen iki değeri temsil eder. Örneğin, gıda maddelerinin popülaritesi, gıda maddesi x ekseni boyunca temsil edilecek ve popülerliği y ekseni boyunca gösterilecek şekilde bir çizgi grafik olarak çizilebilir. Bu bölümde çizgi grafikleri ayrıntılı olarak açıklanmaktadır.

Çizgi Grafik Yöntemleri

Çizgi grafik çizmeye geçmeden önce şunu anlamalıyız: dc.lineChartsınıf ve yöntemleri. Dc.lineChart, grafik çizmenin temel işlevlerini elde etmek için karışımları kullanır. Dc.lineChart tarafından kullanılan karışımlar aşağıdaki gibidir -

  • dc.stackMixin
  • dc.coordinateGridMixin

Dc.lineChart'ın tam sınıf diyagramı aşağıdaki gibidir -

Dc.lineChart, yukarıda belirtilen karışımların tüm yöntemlerini alır ve çizgi grafiği çizmek için kendi yöntemlerine sahiptir. Aşağıdaki şekilde açıklanmıştır.

dashStyle ([stil])

Bu yöntem, bir çizgi grafiği için çizgi stilini ayarlamak için kullanılır.

dotRadius ([yarıçap])

Bu yöntem, veri noktalarında görüntülenen noktaların yarıçapını (PX cinsinden) almak veya ayarlamak için kullanılır. Aşağıdaki gibi tanımlanır -

chart.dotRadius = function (radius) {
   if (!arguments.length) {
      return radius;
   }
};

enterpolate ([i])

Bu yöntem, bir hat için enterpolatörü almak veya ayarlamak için kullanılır.

renderArea ([alan])

Bu yöntem, işleme alanını almak veya ayarlamak için kullanılır.

renderDataPoints ([seçenekler])

Bu yöntem, her veri noktası için ayrı noktalar oluşturmak için kullanılır.

gerilim ([gerilim])

Bu yöntem, çizilen çizgiler için gerginliği almak veya ayarlamak için kullanılır. 0 ile 1 aralığındadır.

xyTipsOn ([xyTipsOn])

Bu yöntem, tek bir veri noktasının fare davranışını değiştirmek için kullanılır.

Çizgi Grafik Çizin

DC'de bir çizgi grafik çizelim. Bunu yapmak için aşağıda verilen adımları izlememiz gerekiyor -

Adım 1: Bir değişken tanımlayın

Aşağıda gösterildiği gibi bir değişken tanımlayalım -

var chart = dc.lineChart('#line');

Burada dc.linechart işlevi, bir id line.

2. Adım: Verileri okuyun

Verileri şuradan okuyun: people.csv dosya -

d3.csv("data/people.csv", function(errors, people) {
   var mycrossfilter = crossfilter(people);
}

Burada, aynı veri kümesini kullandıysak people.csv, örnek veri dosyası aşağıdaki gibi olacaktır -

id,name,gender,DOB,MaritalStatus,CreditCardType
1,Damaris,Female,1973-02-18,false,visa-electron
2,Barbe,Female,1969-04-10,true,americanexpress
3,Belia,Female,1960-04-16,false,maestro
4,Leoline,Female,1995-01-19,true,bankcard
5,Valentine,Female,1992-04-16,false,
6,Rosanne,Female,1985-01-05,true,bankcard
7,Shalna,Female,1956-11-01,false,jcb
8,Mordy,Male,1990-03-27,true,china-unionpay

...............
................
................

3. Adım: Bir yaş boyutu oluşturun

Şimdi, aşağıda gösterildiği gibi yaş için boyut oluşturun -

var ageDimension = mycrossfilter.dimension(function(data) { 
    return ~~((Date.now() - new Date(data.DOB)) / (31557600000)) 
});

Burada, Crossfilter verilerinden yaşı atadık.

~~ çift NOT bitsel bir operatördür. Daha hızlı bir ikame olarak kullanılır.Math.floor() işlevi.

Şimdi, bunu kullanarak gruplandırın reduceCount() aşağıda tanımlanan işlev -

var ageGroup = ageDimension.group().reduceCount();

4. Adım: Bir grafik oluşturun

Şimdi, aşağıda verilen kodlamayı kullanarak bir çizgi grafik oluşturun -

chart
   .width(800)
   .height(300)
   .x(d3.scale.linear().domain([15,70]))
   .brushOn(false)
   .yAxisLabel("Count")
   .xAxisLabel("Age")
   .dimension(ageDimension)
   .group(ageGroup)
   .on('renderlet', function(chart) {
      chart.selectAll('rect').on('click', function(d) {
         console.log('click!', d);
      });
   });

chart.render();

Buraya,

  • Grafik genişliği 800 ve yüksekliği 300'dür.

  • D3.scale.linear işlevi, belirtilen etki alanı aralığı [15, 70] ile yeni bir doğrusal ölçek oluşturmak için kullanılır.

  • Ardından, brushOn false değeri.

  • Y ekseni etiketini şu şekilde atarız: count ve x ekseni etiketi age.

  • Son olarak, kullanarak yaşı gruplandırın ageGroup.

Adım 5: Çalışma örneği

Tam kod listesi aşağıdaki kod bloğunda gösterilmiştir. Bir web sayfası oluşturunline.html ve aşağıdaki değişiklikleri ekleyin.

<html>
   <head>
      <title>DC.js Line Chart Sample</title>
      <link rel = "stylesheet" type = "text/css" href = "css/bootstrap.min.css">
      <link rel = "stylesheet" type = "text/css" href = "css/dc.css"/>

      <script src = "js/d3.js"></script>
      <script src = "js/crossfilter.js"></script>
      <script src = "js/dc.js"></script>
   </head>
   
   <body>
      <div>
         <div id = "line"></div>
      </div>

      <script language = "javascript">
         var chart = dc.lineChart('#line');

         d3.csv("data/people.csv", function(errors, people) {
            var mycrossfilter = crossfilter(people);

            var ageDimension = mycrossfilter.dimension(function(data) { 
               return ~~((Date.now() - new Date(data.DOB)) / (31557600000)) 
            });
            var ageGroup = ageDimension.group().reduceCount();

            chart
               .width(800)
               .height(300)
               .x(d3.scale.linear().domain([15,70]))
               .brushOn(false)
               .yAxisLabel("Count")
               .xAxisLabel("Age")
               .dimension(ageDimension)
               .group(ageGroup)
               .on('renderlet', function(chart) {
                  chart.selectAll('rect').on('click', function(d) {
                     console.log('click!', d);
                  });
               });
            chart.render();
         });
      </script>
   </body>
</html>

Şimdi, tarayıcıyı isteyin ve aşağıdaki yanıtı göreceğiz.