VegaGrafik

Genel bakış

VegaChart, etkileşimli görselleştirme tasarımlarını oluşturmak, kaydetmek ve paylaşmak için kullanılan bildirimli bir dil olan Vega Görselleştirme Dil Bilgisi kullanılarak oluşturulabilecek birçok görselleştirmeden biridir. Vega ile bir görselleştirmenin görsel görünümünü ve etkileşimli davranışını JSON biçiminde tanımlayabilir ve Tuval veya SVG kullanarak web tabanlı görünümler oluşturabilirsiniz.

VegaChart çizerken, grafiğin Vega görselleştirme dil bilgisinde nasıl oluşturulacağına ilişkin bir spesifikasyon eklemeniz gerekir. Bu tür spesifikasyonların birkaç örneğini aşağıda bulabilirsiniz. Daha fazla örneği VegaChart Örnekleri sayfasında bulabilirsiniz.

Not: Google Listeler VegaChart, bir Vega JSON Spesifikasyonu ile belirleyebileceğiniz herhangi bir Vega grafiğini çizebilir (Örnek Galeri'de her şey dahil). Vega API'ye çağrı gerektiren ek özellikler henüz kullanıma sunulmamıştır.

Basit bir örnek olan çubuk grafik

Aşağıda, çubuk grafik çizen VegaChart basit bir örneği verilmiştir. (Orijinal örneği, ayrıntılı eğitimi ve vega grafik düzenleyicideki çubuk grafiği inceleyin.)

Bu, Google Grafikler'de çubuk grafik oluşturmanın bir başka yoludur. Diğer Bar ve Sütun grafiklerinin tüm özelliklerini bu VegaChart'a dayalı yeni bir uygulamaya entegre etmeyi planlıyoruz.

Bu örnekte, "data" seçeneğinin aşağıdakiyle değiştirildiğini unutmayın. Bu seçenek, "table" adlı başka bir veri nesnesi için çizim çağrısı tarafından "data" olarak sağlanan "datatable" öğesini ve Vega spesifikasyonunun geri kalanında "table" kullanılır.

  'data': [{'name': 'table', 'source': 'datatable'}],

<html>
  <head>
    <script src='https://www.gstatic.com/charts/loader.js'></script>
    <script>
      google.charts.load('upcoming', {'packages': ['vegachart']}).then(drawChart);

      function drawChart() {
        const dataTable = new google.visualization.DataTable();
        dataTable.addColumn({type: 'string', 'id': 'category'});
        dataTable.addColumn({type: 'number', 'id': 'amount'});
        dataTable.addRows([
          ['A', 28],
          ['B', 55],
          ['C', 43],
          ['D', 91],
          ['E', 81],
          ['F', 53],
          ['G', 19],
          ['H', 87],
        ]);

        const options = {
          "vega": {
            "$schema": "https://vega.github.io/schema/vega/v4.json",
            "width": 500,
            "height": 200,
            "padding": 5,

            'data': [{'name': 'table', 'source': 'datatable'}],

            "signals": [
              {
                "name": "tooltip",
                "value": {},
                "on": [
                  {"events": "rect:mouseover", "update": "datum"},
                  {"events": "rect:mouseout",  "update": "{}"}
                ]
              }
            ],

            "scales": [
              {
                "name": "xscale",
                "type": "band",
                "domain": {"data": "table", "field": "category"},
                "range": "width",
                "padding": 0.05,
                "round": true
              },
              {
                "name": "yscale",
                "domain": {"data": "table", "field": "amount"},
                "nice": true,
                "range": "height"
              }
            ],

            "axes": [
              { "orient": "bottom", "scale": "xscale" },
              { "orient": "left", "scale": "yscale" }
            ],

            "marks": [
              {
                "type": "rect",
                "from": {"data":"table"},
                "encode": {
                  "enter": {
                    "x": {"scale": "xscale", "field": "category"},
                    "width": {"scale": "xscale", "band": 1},
                    "y": {"scale": "yscale", "field": "amount"},
                    "y2": {"scale": "yscale", "value": 0}
                  },
                  "update": {
                    "fill": {"value": "steelblue"}
                  },
                  "hover": {
                    "fill": {"value": "red"}
                  }
                }
              },
              {
                "type": "text",
                "encode": {
                  "enter": {
                    "align": {"value": "center"},
                    "baseline": {"value": "bottom"},
                    "fill": {"value": "#333"}
                  },
                  "update": {
                    "x": {"scale": "xscale", "signal": "tooltip.category", "band": 0.5},
                    "y": {"scale": "yscale", "signal": "tooltip.amount", "offset": -2},
                    "text": {"signal": "tooltip.amount"},
                    "fillOpacity": [
                      {"test": "datum === tooltip", "value": 0},
                      {"value": 1}
                    ]
                  }
                }
              }
            ]
          }
        };

        const chart = new google.visualization.VegaChart(document.getElementById('chart-div'));
        chart.draw(dataTable, options);
      }
    </script>
  </head>

  <body>
    <div id="chart-div" style="width: 700px; height: 250px;"></div>
  </body>

</html>


Yükleniyor

google.charts.load paket adı "vegachart".

google.charts.load("current", {packages: ["vegachart"]});

Görselleştirmenin sınıf adı: google.visualization.VegaChart.

var visualization = new google.visualization.VegaChart(container);

Veri Biçimi

Veriler, diğer Google Listeleri'ne çok benzer bir şekilde VegaChart'a DataTable (veya DataView) kullanılarak iletilebilir. Temel fark, VegaChart sütunların nasıl kullanıldığını belirlemek için sıralarına güvenmek yerine, her bir sütunun kimliğinin, belirlediğiniz belirli Vega görselleştirmesi için beklenen değerle aynı olmasına dayanmasıdır. Örneğin, aşağıdaki DataTable, 'category' ve 'amount' kimliklerinin bulunduğu sütunlarla oluşturulur ve bu sütunlara referans vermek için "vega" seçeneğinde aynı kimlikler kullanılır.

DataTable ile
        const dataTable = new google.visualization.DataTable();
        dataTable.addColumn({type: 'string', 'id': 'category'});
        dataTable.addColumn({type: 'number', 'id': 'amount'});
        dataTable.addRows([
          ['A', 28],
          ['B', 55],
          ['C', 43],
        ]);

        const options = {
          'vega': {
            ...
            // Here we create the Vega data object named 'datatable',
            // which will be passed in via the draw() call with a DataTable.
            'data': {'name': 'datatable'},

            'scales': [
              {
                'name': 'yscale',
                // Here is an example of how to use the 'amount' field from 'datatable'.
                'domain': {'data': 'datatable', 'field': 'amount'},
              }
            ]
          }
        };

        const chart = new google.visualization.VegaChart(
          document.getElementById('chart-div'));
        chart.draw(dataTable, options);
    
Vega satır içi verilerle
        // A DataTable is required, but it may be empty.
        const dataTable = new google.visualization.DataTable();
        const options = {
          'vega': {
            // Here the data is specified inline in the Vega specification.
            "data": [
              {
               "name": "table",
                "values": [
                  {"category": "A", "amount": 28},
                  {"category": "B", "amount": 55},
                  {"category": "C", "amount": 43},
                ]
              }
            ],

            'scales': [
              {
                'name': 'yscale',
                // Here is how Vega normally uses the 'amount' field from 'table'.
                "domain": {"data": "table", "field": "category"},
              }
            ]
          }
        };

        const chart = new google.visualization.VegaChart(
          document.getElementById('chart-div'));
        chart.draw(dataTable, options);
    

Ancak bu şekilde VegaChart'a yalnızca bir Veri Tablosu iletilebilir ancak bazı Vega grafiklerinde birden fazla veri tablosu gerekir. Bu sınırlamayı, Google Grafikler'in gelecekteki bir sürümünde ele alacağız.

Bu arada, 'vega' 'data' seçeneğinde kullanmanız gereken ek verileri satır içi yaparak veya bir URL'den yükleyerek belirtebilirsiniz. Aşağıda her ikisine de dair örnekleri bulabilirsiniz.

Yapılandırma Seçenekleri

Ad
grafikAlanı

Grafik alanının yerleşimini ve boyutunu yapılandırmak için üyeleri olan bir nesne (eksen ve açıklamalar hariç, grafiğin kendisinin çizildiği yer). İki biçim desteklenir: Sayı veya sayı ve ardından %. Örnek: chartArea:{left:20,top:0,width:'50%',height:'75%'}

Tür: nesne
Varsayılan: null
grafikAlanı.alt

Grafiğin alt kenarlıktan ne kadar uzakta çizileceği.

Tür: sayı veya dize
Varsayılan: otomatik
grafikAlanı.sol

Grafiğin sol kenarlıktan ne kadar uzağa çizileceği.

Tür: sayı veya dize
Varsayılan: otomatik
grafikAlanı.sağ

Grafiğin sağ kenarlıktan ne kadar uzağa çizileceği.

Tür: sayı veya dize
Varsayılan: otomatik
grafikAlanı.top

Grafiğin üst kenarlıktan ne kadar uzağa çizileceği.

Tür: sayı veya dize
Varsayılan: otomatik
grafikAlanı.genişliği

Grafik alanı genişliği.

Tür: sayı veya dize
Varsayılan: otomatik
grafikAlanı.yükseklik

Grafik alanı yüksekliği.

Tür: sayı veya dize
Varsayılan: otomatik
yükseklik

Grafiğin piksel cinsinden yüksekliği.

Tür: sayı
Varsayılan: kapsayıcı öğenin yüksekliği
genişlik

Grafiğin piksel cinsinden genişliği.

Tür: sayı
Varsayılan: kapsayıcı öğenin genişliği

Yöntemler

Yöntem
draw(data, options)

Grafiği çizer. Grafik, yalnızca readyetkinliği tetiklendikten sonra gerçekleştirilen diğer yöntem çağrılarını kabul eder. Extended description dokunun.

Dönüş Türü: yok
getAction(actionID)

İstenen actionID değerini içeren ipucu işlem nesnesini döndürür.

Dönüş Türü: nesne
getBoundingBox(id)

id grafik öğesinin sol, üst, genişlik ve yüksekliğini içeren bir nesne döndürür. id biçimi henüz belgelenmemiş (etkinlik işleyicilerin döndürme değerleridir), ancak bazı örnekler aşağıda verilmiştir:

var cli = chart.getChartLayoutInterface();

Grafik alanının yüksekliği
cli.getBoundingBox('chartarea').height
Çubuk veya sütun grafiğin ilk serisindeki üçüncü çubuğun genişliği
cli.getBoundingBox('bar#0#2').width
Pasta grafiğin beşinci takozunun sınırlayıcı kutusu
cli.getBoundingBox('slice#4')
Dikey (ör. sütun) grafiğin grafik verilerindeki sınır kutusu:
cli.getBoundingBox('vAxis#0#gridline')
Yatay (ör. çubuk) grafiğin veri grafiklerinin sınırlayıcı kutusu:
cli.getBoundingBox('hAxis#0#gridline')

Değerler, grafiğin kapsayıcısıyla ilgilidir. Bunu, grafik çizildikten sonra çağırın.

Dönüş Türü: nesne
getChartAreaBoundingBox()

Grafik içeriğinin sol, üst, genişlik ve yüksekliğini içeren bir nesne döndürür (yani etiketler ve açıklama hariç):

var cli = chart.getChartLayoutInterface();

cli.getChartAreaBoundingBox().left
cli.getChartAreaBoundingBox().top
cli.getChartAreaBoundingBox().height
cli.getChartAreaBoundingBox().width

Değerler, grafiğin kapsayıcısıyla ilgilidir. Bunu, grafik çizildikten sonra çağırın.

Dönüş Türü: nesne
getChartLayoutInterface()

Grafiğin ve yerleşimin öğelerinin ekran yerleşimi hakkında bilgi içeren bir nesne döndürür.

Döndürülen nesnede aşağıdaki yöntemler çağrılabilir:

  • getBoundingBox
  • getChartAreaBoundingBox
  • getHAxisValue
  • getVAxisValue
  • getXLocation
  • getYLocation

Bunu, grafik çizildikten sonra çağırın.

Dönüş Türü: nesne
getHAxisValue(xPosition, optional_axis_index)

xPosition konumundaki yatay veri değerini döndürür. Bu, grafik kapsayıcısının sol kenarından bir piksel ofsetidir. Negatif olabilir.

Örnek: chart.getChartLayoutInterface().getHAxisValue(400).

Bunu, grafik çizildikten sonra çağırın.

İade Türü: numara
getImageURI()

Grafiği resim URI'si olarak serileştirilmiş olarak döndürür.

Bunu, grafik çizildikten sonra çağırın.

PNG Grafiklerini Yazdırma konusuna bakın.

Dönüş Türü: dize
getSelection()

Seçilen grafik varlıklarından oluşan bir diziyi döndürür. Bu grafik için herhangi bir zamanda yalnızca bir varlık seçilebilir. Extended description .

Dönüş Türü: Seçim öğeleri dizisi
getVAxisValue(yPosition, optional_axis_index)

yPosition konumundaki dikey veri değerini döndürür. Bu, grafik kapsayıcısının üst kenarından bir piksel aşağı kaydırmadır. Negatif olabilir.

Örnek: chart.getChartLayoutInterface().getVAxisValue(300).

Bunu, grafik çizildikten sonra çağırın.

İade Türü: numara
getXLocation(dataValue, optional_axis_index)

Grafik kapsayıcısının sol kenarına göre dataValue piksel x koordinatı değerini döndürür.

Örnek: chart.getChartLayoutInterface().getXLocation(400).

Bunu, grafik çizildikten sonra çağırın.

İade Türü: numara
getYLocation(dataValue, optional_axis_index)

Grafik kapsayıcısının üst kenarına göre dataValue piksel y koordinatı döndürür.

Örnek: chart.getChartLayoutInterface().getYLocation(300).

Bunu, grafik çizildikten sonra çağırın.

İade Türü: numara
removeAction(actionID)

İstenen actionID ile ilgili ipucu işlemini grafikten kaldırır.

İade Türü: none
setAction(action)

Kullanıcı işlem metnini tıkladığında yürütülecek bir ipucu işlemi belirler.

setAction yöntemi, bir nesneyi işlem parametresi olarak alır. Bu nesnede 3 özellik belirtilmelidir: id - ayarlanan işlemin kimliği, text - işlem için ipucunda görünmesi gereken metin ve action - bir kullanıcı işlem metnini tıkladığında çalışması gereken işlev.

İpucu işlemlerinin tümü, grafiğin draw() yöntemini çağırmadan önce ayarlanmalıdır. Genişletilmiş açıklama.

İade Türü: none
setSelection()

Belirtilen grafik öğelerini seçer. Önceki seçimleri iptal eder. Bu grafik için tek seferde yalnızca bir öğe seçilebilir. Extended description .

Dönüş Türü: yok
clearChart()

Grafiği temizler ve ayrılan tüm kaynaklarını serbest bırakır.

Dönüş Türü: yok

Etkinlikler

Bu etkinliklerin nasıl kullanılacağı hakkında daha fazla bilgi için Temel Etkileşim, Etkinlikleri Kullanma ve Etkinleştirme Etkinlikleri başlıklı makalelere bakın.

Ad
animationfinish

Geçiş animasyonu tamamlandığında tetiklenir.

Özellikler: yok
click

Kullanıcı grafiğin içini tıkladığında tetiklenir. Başlık, veri öğeleri, gösterge girişleri, eksenler, kılavuz çizgileri veya etiketlerin ne zaman tıklandığını belirlemek için kullanılabilir.

Özellikler: targetID
error

Grafik oluşturulmaya çalışılırken bir hata oluştuğunda tetiklenir.

Özellikler: kimlik, mesaj
legendpagination

Kullanıcı, sayfalara ayırma göstergelerini tıkladığında tetiklenir. Mevcut sıfır tabanlı sayfa dizinini ve toplam sayfa sayısını geri verir.

Özellikler: currentPageIndex, totalPages
onmouseover

Kullanıcı görsel bir varlığın üzerine geldiğinde tetiklenir. İlgili veri tablosu öğesinin satır ve sütun dizinlerini geri verir.

Özellikler: satır, sütun
onmouseout

Kullanıcı görsel varlıktan fareyi uzaklaştırdığında tetiklenir. İlgili veri tablosu öğesinin satır ve sütun dizinlerini geri verir.

Özellikler: satır, sütun
ready

Grafik, harici yöntem çağrıları için hazır. Grafik ve çizim yöntemlerinden sonra etkileşimde bulunmak isterseniz draw yöntemini çağırmadan önce bu etkinlik için bir dinleyici oluşturmanız ve bunları yalnızca etkinlik tetiklendikten sonra kullanmanız gerekir.

Özellikler: yok
select

Kullanıcı bir görsel öğeyi tıkladığında tetiklenir. Nelerin seçildiğini öğrenmek için getSelection() numaralı telefonu arayın.

Özellikler: yok

Veri Politikası

Tüm kod ve veriler tarayıcıda işlenir ve oluşturulur. Hiçbir sunucuya veri gönderilmez.