Graph Goat是Google Visualization API(谷歌可视化API)中的一个图表类型,主要用于展示层级关系数据。通过Chrome扩展程序使用这个API传送数据涉及以下几个核心概念:
要在Chrome扩展程序中使用Google Vis的Graph Goat传送数据,通常需要以下组件:
your-extension/
├── manifest.json
├── popup.html
├── popup.js
└── styles.css
{
"manifest_version": 3,
"name": "Graph Goat Visualizer",
"version": "1.0",
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"permissions": ["storage"]
}
<!DOCTYPE html>
<html>
<head>
<title>Graph Goat Visualizer</title>
<link rel="stylesheet" href="styles.css">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="popup.js"></script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
// 加载Google Visualization API
google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
// 准备数据 - 这里可以替换为从扩展程序存储或API获取的数据
const data = new google.visualization.DataTable();
data.addColumn('string', 'Node');
data.addColumn('string', 'Parent');
data.addColumn('number', 'Size');
data.addRows([
['Root', null, 0],
['A', 'Root', 5],
['B', 'Root', 3],
['C', 'A', 2],
['D', 'A', 1]
]);
// 设置图表选项
const options = {
title: 'Graph Goat Visualization',
width: 400,
height: 300
};
// 创建并绘制图表
const chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
在Chrome扩展程序中使用Graph Goat传送数据有几种常见方法:
// 从chrome.storage获取数据
chrome.storage.local.get(['graphData'], function(result) {
if (result.graphData) {
const data = new google.visualization.DataTable();
// 处理并填充数据
// ...
chart.draw(data, options);
}
});
// 在内容脚本中
const pageData = extractDataFromPage(); // 自定义函数
chrome.runtime.sendMessage({type: 'graphData', data: pageData});
// 在popup.js中
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.type === 'graphData') {
processDataForGraph(request.data);
}
});
// 在扩展程序中使用fetch获取远程数据
fetch('https://api.example.com/graph-data')
.then(response => response.json())
.then(data => {
const dataTable = new google.visualization.DataTable();
// 转换数据格式
// ...
chart.draw(dataTable, options);
});
原因:
解决方案:
// 确保在DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(drawChart);
});
原因:
解决方案: 确保数据表至少包含两列:节点ID和父节点ID。示例正确格式:
const data = new google.visualization.DataTable();
data.addColumn('string', 'Node');
data.addColumn('string', 'Parent');
data.addColumn('number', 'Size'); // 可选
原因:
解决方案:
"permissions": ["https://api.example.com/"]
原因:
解决方案:
const options = {
width: Math.min(600, window.innerWidth - 20),
height: Math.min(400, window.innerHeight - 20)
};
通过以上方法,您可以在Chrome扩展程序中有效地使用Google Visualization API的Graph Goat图表类型来传送和可视化数据。