Genel bakış
Sankey diyagramı, bir değer grubundan diğerine akışı göstermek için kullanılan bir görselleştirmedir. Bağlanan nesnelere düğüm, bağlantılara bağlantı adı verilir. İki alan (ör. üniversiteler ve ana dallar) arasında birden çoka-çok eşleme veya bir dizi aşamadan geçen birden çok yol (örneğin, Google Analytics, trafiğin web sitenizdeki diğer sayfalara nasıl aktığını göstermek için üst paneller) göstermek istediğinizde kullanılır.
Merak edenler, adını Kaptan Sankey'den alıyor. Bu diyagramda, genişlikleri ısı kaybıyla orantılı olan okların kullanıldığı bir buhar motoru verimlilik diyagramı bulunuyor.
Not: Sankey grafiği, gelecekteki Google Charts sürümlerinde önemli revizyonlar geçiriyor olabilir.
Sankey diyagramları, kullanıcının tarayıcısına uygun olan SVG veya VML kullanılarak tarayıcıda oluşturulur. Google'ın sığınak düzeni kodu, D3'ün yapay zeka düzen kodundan türetilir.
Not: Google canavar grafikleri Microsoft Internet Explorer 8 ve önceki sürümlerde kullanılamaz.
Basit Bir Örnek
X, Y ve Z olmak üzere üç kategoriye daha bağlanan A ve B olmak üzere iki kategorinizin olduğunu varsayalım. Bu bağlantıların bazıları diğerlerinden daha ağırdır. Örneğin, B'nin X ile ince, Y ile ise çok daha güçlü bir bağlantısı vardır.
Bağlantıyı vurgulamak için fareyle bağlantılardan birinin üzerine gelmeyi deneyin.
Sankey grafiği oluşturmak için her biri tek bir bağlantıyla ilgili bilgiler içeren bir satır kümesi sağlayın: başlangıç, bitiş ve ağırlık. Ardından grafiği başlatmak için google.visualization.Sankey()
yöntemini ve oluşturmak için draw()
yöntemini kullanın:
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['sankey']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'From'); data.addColumn('string', 'To'); data.addColumn('number', 'Weight'); data.addRows([ [ 'A', 'X', 5 ], [ 'A', 'Y', 7 ], [ 'A', 'Z', 6 ], [ 'B', 'X', 2 ], [ 'B', 'Y', 9 ], [ 'B', 'Z', 4 ] ]); // Sets chart options. var options = { width: 600, }; // Instantiates and draws our chart, passing in some options. var chart = new google.visualization.Sankey(document.getElementById('sankey_basic')); chart.draw(data, options); } </script> </head> <body> <div id="sankey_basic" style="width: 900px; height: 300px;"></div> </body> </html>
Not: Verilerinizde döngülerden kaçının: A kendine bağlantı oluşturuyorsa veya A'ya bağlantı veren C'ye bağlantı veren B'ye bağlantı veriyorsa grafiğiniz oluşturulmaz.
Çok Düzeyli Sankey'ler
Birden çok bağlantı düzeyinde Sankey grafiği oluşturabilirsiniz:
Sankey grafikleri gerektiğinde ilave seviyeler ekleyerek otomatik olarak yerleştirilir. Yukarıdaki grafik için kodun tamamı aşağıda verilmiştir:
<html> <body> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <div id="sankey_multiple" style="width: 900px; height: 300px;"></div> <script type="text/javascript"> google.charts.load("current", {packages:["sankey"]}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'From'); data.addColumn('string', 'To'); data.addColumn('number', 'Weight'); data.addRows([ [ 'Brazil', 'Portugal', 5 ], [ 'Brazil', 'France', 1 ], [ 'Brazil', 'Spain', 1 ], [ 'Brazil', 'England', 1 ], [ 'Canada', 'Portugal', 1 ], [ 'Canada', 'France', 5 ], [ 'Canada', 'England', 1 ], [ 'Mexico', 'Portugal', 1 ], [ 'Mexico', 'France', 1 ], [ 'Mexico', 'Spain', 5 ], [ 'Mexico', 'England', 1 ], [ 'USA', 'Portugal', 1 ], [ 'USA', 'France', 1 ], [ 'USA', 'Spain', 1 ], [ 'USA', 'England', 5 ], [ 'Portugal', 'Angola', 2 ], [ 'Portugal', 'Senegal', 1 ], [ 'Portugal', 'Morocco', 1 ], [ 'Portugal', 'South Africa', 3 ], [ 'France', 'Angola', 1 ], [ 'France', 'Senegal', 3 ], [ 'France', 'Mali', 3 ], [ 'France', 'Morocco', 3 ], [ 'France', 'South Africa', 1 ], [ 'Spain', 'Senegal', 1 ], [ 'Spain', 'Morocco', 3 ], [ 'Spain', 'South Africa', 1 ], [ 'England', 'Angola', 1 ], [ 'England', 'Senegal', 1 ], [ 'England', 'Morocco', 2 ], [ 'England', 'South Africa', 7 ], [ 'South Africa', 'China', 5 ], [ 'South Africa', 'India', 1 ], [ 'South Africa', 'Japan', 3 ], [ 'Angola', 'China', 5 ], [ 'Angola', 'India', 1 ], [ 'Angola', 'Japan', 3 ], [ 'Senegal', 'China', 5 ], [ 'Senegal', 'India', 1 ], [ 'Senegal', 'Japan', 3 ], [ 'Mali', 'China', 5 ], [ 'Mali', 'India', 1 ], [ 'Mali', 'Japan', 3 ], [ 'Morocco', 'China', 5 ], [ 'Morocco', 'India', 1 ], [ 'Morocco', 'Japan', 3 ] ]); // Set chart options var options = { width: 600, }; // Instantiate and draw our chart, passing in some options. var chart = new google.visualization.Sankey(document.getElementById('sankey_multiple')); chart.draw(data, options); } </script> </body> </html>
Renkleri Kontrol Etme
Sankey grafiklerinde düğümler ve bağlantılar için özel renkler ayarlayabilirsiniz. Hem düğümlere hem de bağlantılara, colors
seçenekleri (sırasıyla sankey.node.colors
ve sankey.link.colors
) kullanılarak özel renk paletleri verilebilir. Ayrıca, colorMode
seçeneği kullanılarak farklı renklendirme modları da sunulabilir.
Renkler özelleştirilmezse varsayılan olarak standart Malzeme paleti kullanılır.
var colors = ['#a6cee3', '#b2df8a', '#fb9a99', '#fdbf6f', '#cab2d6', '#ffff99', '#1f78b4', '#33a02c']; var options = { height: 400, sankey: { node: { colors: colors }, link: { colorMode: 'gradient', colors: colors } } };
Yapılandırma seçeneklerini kullanarak bağlantıların, düğümlerin ve etiketlerin renklerini kontrol edebilirsiniz. Burada, aynı tona ancak farklı parlaklıklara sahip üç tane seçiyoruz:
Bu seçenekler aşağıdaki gibi görünür:
var options = { width: 600, sankey: { link: { color: { fill: '#d799ae' } }, node: { colors: [ '#a61d4c' ], label: { color: '#871b47' } }, } };
sankey.link.color.fillOpacity
seçeneğiyle bağlantıların şeffaflığını da kontrol edebilirsiniz:
var options = { width: 600, sankey: { link: { color: { fill: '#d799ae', fillOpacity: 0.8 } }, node: { colors: [ '#a61d4c' ], label: { color: '#871b47' } }, } };
Bağlantıların etrafında kenarlık oluşturmak için sankey.link.color.stroke
ve sankey.link.color.strokeWidth
seçeneklerini kullanın:
Fırça rengi, RGB biçiminde veya İngilizce adıyla belirtilebilir.
var options = { width: 750, height: 400, sankey: { node: { colors: [ '#a61d4c' ] }, link: { color: { stroke: 'black', strokeWidth: 1 } }, } };
Etiketleri Özelleştirme
Sankey grafiklerindeki metinler, sankey.node.label.fontName
ve arkadaşlar kullanılarak özelleştirilebilir:
Yukarıdaki grafikteki seçenek örneği:
var options = { width: 600, sankey: { node: { label: { fontName: 'Times-Roman', fontSize: 14, color: '#871b47', bold: true, italic: true } } }, };
sankey.node.labelPadding
seçeneğini kullanarak etiketlerin düğümlere göre konumunu ayarlayabilirsiniz:
Yukarıdaki grafikte, etiketler ve düğümler arasına 30 piksellik dolgu ekledik.
var options = { width: 600, sankey: { node: { labelPadding: 30 } }, };
Düğümleri Ayarlama
sankey.node.width
ile düğümlerin genişliğini kontrol edebilirsiniz:
Yukarıda, düğüm genişliğini 2 olarak ayarladık.
var options = { width: 600, sankey: { node: { width: 2 } }, };
sankey.node.nodePadding
ile düğümler arasındaki mesafeyi ayarlayabilirsiniz:
Yukarıdaki grafikte sankey.node.nodePadding
değerini 80 olarak ayarladık.
var options = { width: 900, sankey: { node: { nodePadding: 80 } }, };
Yükleniyor
google.charts.load
paketinin adı "sankey"
:
google.charts.load("current" {packages: ["sankey"]});
Görselleştirmenin sınıf adı: google.visualization.Sankey
:
var visualization = new google.visualization.Sankey(container);
Veri Biçimi
Satırlar: Tablodaki her bir satır, iki etiket arasındaki bağlantıyı temsil eder. Üçüncü sütun, bu bağlantının gücünü belirtir ve etiketler arasındaki yolun genişliğine yansıtılır.
Sütunlar:
Sütun 0 | 1. Sütun | 2. Sütun | ... | Sütun N (isteğe bağlı) | |
---|---|---|---|---|---|
Amaç: | Kaynak | Hedef | Değer | ... | İsteğe bağlı roller |
Veri Türü: | dize | dize | sayı | ... | |
Rol: | alan | alan | veri | ... | |
İsteğe bağlı sütun rolleri: | Yok |
Yok |
Yok |
... |
Yapılandırma Seçenekleri
Ad | |
---|---|
forceIFrame |
Grafiği bir satır içi çerçevenin içine çizer. (IE8'de bu seçeneğin yoksayıldığını unutmayın. Tüm IE8 grafikleri, iç çerçeveler kullanılarak çizilir.) Tür: boole
Varsayılan: false
|
yükseklik |
Grafiğin piksel cinsinden yüksekliği. Tür: numara
Varsayılan: kapsayıcı öğenin yüksekliği
|
sankey.iterations |
Çok seviyeli korumalar nedeniyle, bazen optimum okunabilirlik için düğümlerin yerleştirilmesi gereken yer anlaşılmaz. D3 düzen motoru, farklı düğüm düzenleriyle denemeler yapar ve Tür: tam sayı
Varsayılan: 32
|
sankey.link |
Düğümler arasındaki bağlantıların özelliklerini kontrol eder. Şu anda tüm özellikler renklerle ilgilidir: sankey: { link: { color: { fill: '#efd', // Color of the link. fillOpacity: 0.8, // Transparency of the link. stroke: 'black', // Color of the link border. strokeWidth: 1 // Thickness of the link border (default 0). }, colors: [ '#a6cee3', // Custom color palette for sankey links. '#1f78b4', // Nodes will cycle through this palette '#b2df8a', // giving the links for that node the color. '#33a02c' ] } } Tür: nesne
Varsayılan: null
|
sankey.link.colorMode |
Düğümler arasındaki bağlantılar için bir renklendirme modu ayarlar. Olası değerler:
Bu seçenek sankey.link.color'ı geçersiz kılar. Tür: dize
Varsayılan: 'none'
|
sankey.node |
Düğümlerin özelliklerini kontrol eder (bağlantılar arasındaki dikey çubuklar): sankey: { node: { label: { fontName: 'Times-Roman', fontSize: 12, color: '#000', bold: true, italic: false }, interactivity: true, // Allows you to select nodes. labelPadding: 6, // Horizontal distance between the label and the node. nodePadding: 10, // Vertical distance between nodes. width: 5, // Thickness of the node. colors: [ '#a6cee3', // Custom color palette for sankey nodes. '#1f78b4', // Nodes will cycle through this palette '#b2df8a', // giving each node its own color. '#33a02c' ] } } Tür: nesne
Varsayılan: null
|
sankey.node.colorMode |
Sankey düğümleri için renklendirme modu ayarlar. Olası değerler:
Tür: dize
Varsayılan: "benzersiz"
|
ipucu |
Çeşitli ipucu öğelerini yapılandırmak için üyeler içeren bir nesne. Bu nesnenin özelliklerini belirtmek için burada gösterildiği gibi nesne değişmez değer gösterimini kullanabilirsiniz: {textStyle: {color: '#FF0000'}, showColorCode: true} Tür: nesne
Varsayılan: null
|
tooltip.isHtml |
Doğru değerine ayarlanırsa (SVG tarafından oluşturulan yerine) HTML ile oluşturulan ipuçlarını kullanın. Daha fazla ayrıntı için İpucu İçeriğini Özelleştirme bölümüne bakın. Not: HTML ipucu içeriğinin ipucu sütunu veri rolü aracılığıyla özelleştirilmesi balon grafik görselleştirmesi tarafından desteklenmez. Tür: boole
Varsayılan: false
|
tooltip.textStyle |
İpucu metin stilini belirten bir nesne. Nesnenin biçimi şu şekildedir: { color: <string>, fontName: <string>, fontSize: <number>, bold: <boolean>, italic: <boolean> }
Tür: nesne
Varsayılan:
{color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
|
genişlik |
Grafiğin piksel cinsinden genişliği. Tür: numara
Varsayılan: kapsayıcı öğenin genişliği
|
Yöntemler
Yöntem | |
---|---|
draw(data, options) |
Grafiği çizer. Grafik, yalnızca Return Type (Dönüş Türü): yok
|
getBoundingBox(id) |
Değerler, grafiğin kapsayıcısına bağlıdır. Grafik çizildikten sonra bunu çağırın. Return Type: nesne
|
getSelection() |
Seçilen grafik varlıklarından oluşan bir dizi döndürür.
Seçilebilir varlıklar çubuklar, gösterge girişleri ve kategorilerdir.
Bu grafik için aynı anda yalnızca bir öğe seçilebilir.
Dönüş Türü: Seçim öğeleri dizisi
|
setSelection() |
Belirtilen grafik varlıklarını seçer. Önceki seçimleri iptal eder.
Seçilebilir varlıklar çubuklar, gösterge girişleri ve kategorilerdir.
Bu grafik için aynı anda yalnızca bir öğe seçilebilir.
Return Type (Dönüş Türü): yok
|
clearChart() |
Grafiği temizler ve ayrılan tüm kaynaklarını serbest bırakır. Return Type (Dönüş Türü): yok
|
Etkinlikler
Ad | |
---|---|
error |
Grafik oluşturulmaya çalışılırken bir hata oluştuğunda tetiklenir. Özellikler: kimlik, mesaj
|
onmouseover |
Kullanıcı fareyle bir görsel öğenin üzerine geldiğinde tetiklenir. İlgili veri tablosu öğesinin satır ve sütun dizinlerini geri verir. Bir çubuk, veri tablosundaki bir hücreyle, bir sütuna açıklama girişiyle (satır dizini boştur) ve kategoriyle satırla (sütun dizini null) ilişkilendirilir. Özellikler: satır, sütun
|
onmouseout |
Kullanıcı faresini görsel bir öğeden uzaklaştırdığında tetiklenir. İlgili veri tablosu öğesinin satır ve sütun dizinlerini geri verir. Bir çubuk, veri tablosundaki bir hücreyle, bir sütuna açıklama girişiyle (satır dizini boştur) ve kategoriyle satırla (sütun dizini null) ilişkilendirilir. Özellikler: satır, sütun
|
ready |
Grafik, harici yöntem çağrıları için hazır. Grafikle etkileşim kurmak ve
çizdikten sonra yöntemleri çağırmak isterseniz Özellikler: yok
|
select |
Kullanıcı bir görsel öğeyi tıkladığında tetiklenir. Neyin seçildiğini öğrenmek için Özellikler: yok
|
Veri Politikası
Tüm kod ve veriler tarayıcıda işlenip oluşturulur. Herhangi bir sunucuya veri gönderilmez.