ภาพรวม
แผนภาพ Sankey คือภาพที่ใช้แสดงโฟลว์จากชุดค่าหนึ่งไปยังอีกชุดหนึ่ง สิ่งที่เชื่อมต่ออยู่เรียกว่าโหนด และการเชื่อมต่อเรียกว่าลิงก์ Sankey เหมาะสำหรับเมื่อคุณต้องการแสดงการแมปแบบหลายต่อหลายระหว่าง 2 โดเมน (เช่น มหาวิทยาลัยและมหาวิทยาลัย) หรือหลายเส้นทางผ่านชุดขั้นตอน (เช่น Google Analytics ใช้ sankey เพื่อแสดงว่าการเข้าชมจากหน้าเว็บไปยังหน้าอื่นๆ ในเว็บไซต์) อย่างไร
หากอยากรู้เพิ่มเติม พวกเขาตั้งชื่อตามกัปตันแซนคีย์ ผู้สร้างแผนภาพประสิทธิภาพของเครื่องยนต์ไอน้ำซึ่งใช้ลูกศรที่มีความกว้างตามสัดส่วนของการสูญเสียความร้อน
หมายเหตุ: แผนภูมิ Sankey อาจอยู่ระหว่างการแก้ไขอย่างมากใน Google แผนภูมิรุ่นต่อๆ ไป
แผนภาพ Sankey จะแสดงในเบราว์เซอร์โดยใช้ SVG หรือ VML ขึ้นอยู่กับว่าแบบใดเหมาะกับเบราว์เซอร์ของผู้ใช้ โค้ดเลย์เอาต์ sankey ของ Google ได้มาจากโค้ดเลย์เอาต์ Sankey ของ D3
หมายเหตุ: แผนภูมิ Sankey ของ Google ไม่พร้อมใช้งานใน Microsoft Internet Explorer 8 และเวอร์ชันก่อนหน้า
ตัวอย่างง่ายๆ
สมมติว่าคุณมี 2 หมวดหมู่ ได้แก่ A และ B ซึ่งเชื่อมต่อกับหมวดหมู่อื่นๆ อีก 3 หมวดหมู่ ได้แก่ X, Y และ Z การเชื่อมโยงเหล่านั้นบางส่วน จะหนักกว่ารายการอื่นๆ เช่น B มีการเชื่อมต่อกับ X ที่บางและมีการเชื่อมต่อกับ Y ที่หนากว่า
ลองวางเมาส์เหนือลิงก์ใดลิงก์หนึ่งเพื่อไฮไลต์การเชื่อมต่อ
ในการสร้างแผนภูมิ Sankey ให้ระบุชุดของแถว โดยแต่ละชุดจะมีข้อมูลการเชื่อมต่อ 1 รายการดังนี้ "จาก" "ถึง" และ "น้ำหนัก" จากนั้นใช้เมธอด google.visualization.Sankey()
เพื่อเริ่มต้นแผนภูมิ แล้วใช้เมธอด draw()
เพื่อแสดงผล ดังนี้
<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>
หมายเหตุ: หลีกเลี่ยงรอบในข้อมูล: หาก A ลิงก์กับตัวเอง หรือลิงก์ไปยัง B ซึ่งลิงก์กับ C ซึ่งลิงก์ไปยัง A แผนภูมิจะไม่แสดง
Sankey แบบหลายระดับ
คุณสามารถสร้างแผนภูมิ Sankey ที่มีการเชื่อมต่อหลายระดับได้ดังนี้
แผนภูมิ Sankey จะเพิ่มระดับเพิ่มเติมตามความจำเป็น ซึ่งจะจัดวางแผนภูมิเหล่านั้นโดยอัตโนมัติ ต่อไปนี้คือรหัสที่สมบูรณ์สำหรับแผนภูมิด้านบน
<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>
การควบคุมสี
แผนภูมิ Sankey มีความสามารถในการกำหนดสีที่กำหนดเองสำหรับโหนดและลิงก์ คุณจะกำหนดชุดสีที่กำหนดเองให้กับทั้งโหนดและลิงก์ได้โดยใช้ตัวเลือก colors
(sankey.node.colors
และ sankey.link.colors
ตามลำดับ) และยังกำหนดโหมดสีต่างๆ ได้โดยใช้ตัวเลือก colorMode
หากไม่มีการปรับแต่งสี ระบบจะใช้ชุดสีดังกล่าวเป็นค่าเริ่มต้น จากชุดสีมาตรฐาน
var colors = ['#a6cee3', '#b2df8a', '#fb9a99', '#fdbf6f', '#cab2d6', '#ffff99', '#1f78b4', '#33a02c']; var options = { height: 400, sankey: { node: { colors: colors }, link: { colorMode: 'gradient', colors: colors } } };
คุณควบคุมสีของลิงก์ โหนด และป้ายกำกับได้ด้วยตัวเลือกการกำหนดค่า ในส่วนนี้เราจะเลือก 3 รายการที่มีโทนสีเดียวกัน แต่มีความสว่างต่างกัน
ตัวเลือกเหล่านั้นจะมีลักษณะดังนี้
var options = { width: 600, sankey: { link: { color: { fill: '#d799ae' } }, node: { colors: [ '#a61d4c' ], label: { color: '#871b47' } }, } };
คุณยังควบคุมความโปร่งใสของลิงก์ได้ด้วยตัวเลือก sankey.link.color.fillOpacity
ดังนี้
var options = { width: 600, sankey: { link: { color: { fill: '#d799ae', fillOpacity: 0.8 } }, node: { colors: [ '#a61d4c' ], label: { color: '#871b47' } }, } };
หากต้องการสร้างเส้นขอบรอบลิงก์ ให้ใช้ตัวเลือก sankey.link.color.stroke
และ sankey.link.color.strokeWidth
ดังนี้
ระบุสีของเส้นโครงร่างได้ในรูปแบบ RGB หรือตามชื่อภาษาอังกฤษ
var options = { width: 750, height: 400, sankey: { node: { colors: [ '#a61d4c' ] }, link: { color: { stroke: 'black', strokeWidth: 1 } }, } };
การปรับแต่งป้ายกำกับ
คุณปรับแต่งข้อความในแผนภูมิ Sankey ได้โดยใช้ sankey.node.label.fontName
และเพื่อน ดังนี้
ข้อความตัวเลือกสำหรับแผนภูมิด้านบนมีดังนี้
var options = { width: 600, sankey: { node: { label: { fontName: 'Times-Roman', fontSize: 14, color: '#871b47', bold: true, italic: true } } }, };
คุณปรับตำแหน่งของป้ายกำกับที่สัมพันธ์กับโหนดได้ด้วยตัวเลือก sankey.node.labelPadding
ดังนี้
ในแผนภูมิด้านบน เราได้เพิ่มระยะห่างจากขอบ 30 พิกเซลระหว่างป้ายกำกับและโหนด
var options = { width: 600, sankey: { node: { labelPadding: 30 } }, };
การปรับโหนด
คุณควบคุมความกว้างของโหนดได้ด้วย sankey.node.width
ดังนี้
ด้านบน เราตั้งค่าความกว้างของโหนดเป็น 2
var options = { width: 600, sankey: { node: { width: 2 } }, };
คุณปรับระยะห่างระหว่างโหนดต่างๆ ได้ด้วย sankey.node.nodePadding
ดังนี้
ในแผนภูมิด้านบน เราตั้งค่า sankey.node.nodePadding
เป็น 80
var options = { width: 900, sankey: { node: { nodePadding: 80 } }, };
กำลังโหลด
ชื่อแพ็กเกจ google.charts.load
คือ "sankey"
:
google.charts.load("current" {packages: ["sankey"]});
ชื่อคลาสของการแสดงภาพคือ google.visualization.Sankey
var visualization = new google.visualization.Sankey(container);
รูปแบบข้อมูล
แถว: แต่ละแถวในตารางแสดงการเชื่อมต่อระหว่างป้ายกำกับ 2 ป้าย คอลัมน์ที่ 3 บ่งชี้ความแรงของการเชื่อมต่อนั้น และจะแสดงในความกว้างของเส้นทางระหว่างป้ายกำกับ
คอลัมน์:
คอลัมน์ 0 | คอลัมน์ที่ 1 | คอลัมน์ที่ 2 | ... | คอลัมน์ N (ไม่บังคับ) | |
---|---|---|---|---|---|
จุดประสงค์ในการใช้: | แหล่งที่มา | ปลายทาง | ค่า | ... | บทบาทที่ไม่บังคับ |
ประเภทข้อมูล: | string | string | ตัวเลข | ... | |
บทบาท: | โดเมน | โดเมน | ข้อมูล | ... | |
บทบาทของคอลัมน์ที่ไม่บังคับมีดังนี้ | ไม่มี |
ไม่มี |
ไม่มี |
... |
ตัวเลือกการกำหนดค่า
ชื่อ | |
---|---|
forceIFrame |
วาดแผนภูมิภายในเฟรมแบบอินไลน์ (โปรดทราบว่าใน IE8 ตัวเลือกนี้จะถูกละเว้น และแผนภูมิ IE8 ทั้งหมดวาดใน i-frame) ประเภท: บูลีน
ค่าเริ่มต้น: เท็จ
|
ส่วนสูง |
ความสูงของแผนภูมิเป็นพิกเซล ประเภท: ตัวเลข
ค่าเริ่มต้น: ความสูงขององค์ประกอบที่มีอยู่
|
sankey.iterations |
เมื่อใช้ sankey แบบหลายระดับ ในบางครั้งคุณอาจดูไม่ชัดเจนว่าควรวางโหนดอย่างไรเพื่อให้อ่านได้ดีที่สุด เครื่องมือเลย์เอาต์ D3 จะทำการทดลองกับเลย์เอาต์โหนดต่างๆ โดยจะหยุดลงเมื่อมีการพยายาม ประเภท: จำนวนเต็ม
ค่าเริ่มต้น: 32
|
sankey.link |
ควบคุมแอตทริบิวต์ของการเชื่อมต่อระหว่างโหนด ปัจจุบันแอตทริบิวต์ทั้งหมดเกี่ยวข้องกับสี 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' ] } } ประเภท: ออบเจ็กต์
ค่าเริ่มต้น: null
|
sankey.link.colorMode |
ตั้งค่าโหมดสีสำหรับลิงก์ระหว่างโหนด ค่าที่เป็นไปได้มีดังนี้
ตัวเลือกนี้จะลบล้าง sankey.link.color ประเภท: สตริง
ค่าเริ่มต้น: "none"
|
sankey.node |
ควบคุมแอตทริบิวต์ของโหนด (แท่งแนวตั้งระหว่างลิงก์) ดังนี้ 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' ] } } ประเภท: ออบเจ็กต์
ค่าเริ่มต้น: null
|
sankey.node.colorMode |
ตั้งค่าโหมดการระบายสีสำหรับโหนด Sankey ค่าที่เป็นไปได้มีดังนี้
ประเภท: สตริง
ค่าเริ่มต้น: "ไม่ซ้ำกัน"
|
เคล็ดลับเครื่องมือ |
ออบเจ็กต์ที่มีสมาชิกเพื่อกำหนดค่าองค์ประกอบเคล็ดลับเครื่องมือที่หลากหลาย หากต้องการระบุพร็อพเพอร์ตี้ของออบเจ็กต์นี้ คุณใช้รูปแบบลิเทอรัลของออบเจ็กต์ได้ดังที่แสดงที่นี่ {textStyle: {color: '#FF0000'}, showColorCode: true} ประเภท: ออบเจ็กต์
ค่าเริ่มต้น: null
|
tooltip.isHtml |
หากตั้งค่าเป็น "จริง" ให้ใช้เคล็ดลับเครื่องมือที่แสดงผล HTML (แทนการแสดงผล SVG) ดูรายละเอียดเพิ่มเติมได้ที่การปรับแต่งเนื้อหาเคล็ดลับเครื่องมือ หมายเหตุ: การแสดงข้อมูลผ่านภาพแผนภูมิลูกโป่งไม่รองรับการปรับแต่งเนื้อหาเคล็ดลับเครื่องมือ HTML ผ่านบทบาทข้อมูลในคอลัมน์เคล็ดลับเครื่องมือ ประเภท: บูลีน
ค่าเริ่มต้น: เท็จ
|
tooltip.textStyle |
ออบเจ็กต์ที่ระบุรูปแบบข้อความของเคล็ดลับเครื่องมือ ออบเจ็กต์มีรูปแบบดังนี้ { color: <string>, fontName: <string>, fontSize: <number>, bold: <boolean>, italic: <boolean> }
ประเภท: ออบเจ็กต์
ค่าเริ่มต้น:
{color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
|
ความกว้าง |
ความกว้างของแผนภูมิเป็นพิกเซล ประเภท: ตัวเลข
ค่าเริ่มต้น: ความกว้างขององค์ประกอบที่มีอยู่
|
วิธีการ
วิธีการ | |
---|---|
draw(data, options) |
วาดแผนภูมิ แผนภูมิยอมรับการเรียกใช้เมธอดเพิ่มเติมหลังจากที่เหตุการณ์ ประเภทการคืนสินค้า: ไม่มี
|
getBoundingBox(id) |
แสดงผลออบเจ็กต์ที่มีด้านซ้าย ด้านบน ความกว้าง และความสูงขององค์ประกอบแผนภูมิ
ค่าจะสัมพันธ์กับคอนเทนเนอร์ของแผนภูมิ เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทผลลัพธ์: ออบเจ็กต์
|
getSelection() |
แสดงผลอาร์เรย์ของเอนทิตีแผนภูมิที่เลือก
เอนทิตีที่เลือกได้คือแท่ง รายการคำอธิบาย และหมวดหมู่
สำหรับแผนภูมินี้ คุณสามารถเลือกเอนทิตีได้เพียง 1 รายการในช่วงเวลาหนึ่งๆ
ประเภทผลลัพธ์: อาร์เรย์ขององค์ประกอบการเลือก
|
setSelection() |
เลือกเอนทิตีแผนภูมิที่ระบุ ยกเลิกรายการที่เลือกก่อนหน้า
เอนทิตีที่เลือกได้คือแท่ง รายการคำอธิบาย และหมวดหมู่
สำหรับแผนภูมินี้ คุณสามารถเลือกเอนทิตีได้ครั้งละ 1 รายการเท่านั้น
ประเภทการคืนสินค้า: ไม่มี
|
clearChart() |
ล้างแผนภูมิ และปล่อยทรัพยากรที่จัดสรรทั้งหมด ประเภทการคืนสินค้า: ไม่มี
|
กิจกรรม
ชื่อ | |
---|---|
error |
เริ่มทำงานเมื่อเกิดข้อผิดพลาดขณะพยายามแสดงผลแผนภูมิ พร็อพเพอร์ตี้: รหัส ข้อความ
|
onmouseover |
เริ่มทำงานเมื่อผู้ใช้วางเมาส์เหนือเอนทิตีที่มีภาพ ส่งกลับดัชนีแถวและคอลัมน์ขององค์ประกอบตารางข้อมูลที่เกี่ยวข้อง แท่งกราฟสัมพันธ์กับเซลล์ในตารางข้อมูล รายการคำอธิบายในคอลัมน์ (ดัชนีแถวเป็นค่าว่าง) และหมวดหมู่ของแถว (ดัชนีคอลัมน์เป็นค่าว่าง) พร็อพเพอร์ตี้: แถว คอลัมน์
|
onmouseout |
เริ่มทำงานเมื่อผู้ใช้เลื่อนเมาส์ออกห่างจากองค์ประกอบภาพ ส่งกลับดัชนีแถวและคอลัมน์ขององค์ประกอบตารางข้อมูลที่เกี่ยวข้อง แท่งกราฟสัมพันธ์กับเซลล์ในตารางข้อมูล รายการคำอธิบายในคอลัมน์ (ดัชนีแถวเป็นค่าว่าง) และหมวดหมู่ของแถว (ดัชนีคอลัมน์เป็นค่าว่าง) พร็อพเพอร์ตี้: แถว คอลัมน์
|
ready |
แผนภูมิพร้อมสำหรับการเรียกใช้เมธอดภายนอกแล้ว หากต้องการโต้ตอบกับแผนภูมิและวิธีเรียกใช้หลังจากที่วาดแล้ว คุณควรตั้งค่า Listener สำหรับเหตุการณ์นี้ก่อนเรียกใช้เมธอด พร็อพเพอร์ตี้: ไม่มี
|
select |
เริ่มทำงานเมื่อผู้ใช้คลิกเอนทิตีภาพ หากต้องการดูสิ่งที่เลือก โปรดโทรหา
พร็อพเพอร์ตี้: ไม่มี
|
นโยบายข้อมูล
โค้ดและข้อมูลทั้งหมดจะได้รับการประมวลผลและแสดงผลในเบราว์เซอร์ โดยจะไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ใดๆ