17、玩转谷歌图表与地图:从基础到定制

掌握谷歌图表与地图定制

玩转谷歌图表与地图:从基础到定制

1. 更改图表类型

更改图表类型并非复杂之事。只要图表类型的数据条目数量相同,通常只需修改图表实际构造对象中的一个单词即可。例如,通过更改可视化库中调用的方法,能快速切换图表类型:

var chart = new google.visualization.LineChart(document.getElementById('chart'));
chart.draw(data, options);

上述代码会使用相同的数据,仅将其渲染为折线图( LineChart 对象)。

2. 使用 ChartWrapper 创建图表

使用 Google Charts 创建图表有两种方式。这里介绍使用 ChartWrapper 对象创建图表,其目的是减少创建图表所需的代码量。
- 优点 :代码量少,数据源更灵活。
- 缺点 :对图表创建步骤的控制较少。

操作步骤
1. 获取上一个示例(从饼图入门)中的 HTML 文件,仅修改外部 JavaScript 文件的文件路径,其余代码保持不变。
2. 进入 JavaScript 文件,重新开始:
- 加载 Google API 并添加回调:

google.load('visualization', '1.0');
google.setOnLoadCallback(init);
- 创建 `init` 函数:
function init(){
    //...
}
- 构建包含数据源的二维数组:
var dataTable = [
    ['Type of Death','Deaths'],
    ['Diseases of heart', 616828],
    ['Malignant neoplasms', 565469],
    ['Chronic lower respiratory diseases', 141090], 
    ['Cerebrovascular diseases', 134148],
    ['Accidents ', 121902],
    ['Alzheimer\'s disease ', 82435],
    ['Diabetes mellitus', 70553],
    ['Influenza and pneumonia', 56284],
    ['Suicide', 36035],
    ['Septicemia', 35927],
    ['Chronic liver disease and cirrhosis', 29963],
    ['Essential hypertension and hypertensive renal disease', 25742],
    ['Parkinson\'s disease', 20483],
    ['Homicide', 17826],
    ['All other causes', 469062]
];
- 创建选项对象:
var options = {'title':'Deaths, for the 15 leading causes of death: United States, 2008',
    'width':800,
    'height':600,
    "is3D": true};
- 构建并渲染图表:
var chart = new google.visualization.ChartWrapper({
    chartType:'PieChart',
    dataTable:dataTable,
    options:options,
    containerId:'chart'
});
chart.draw();

刷新屏幕,即可看到与上一个示例相同的图表,但使用的代码更少。

3. 一键更改图表类型

在 Google Chart API 的不同视图类型之间切换非常容易,只需更改类型即可。例如,将图表更改为条形图:

var chart = new google.visualization.ChartWrapper({
    chartType:'BarChart',
    dataTable:dataTable,
    options:options,
    containerId:'chart'
});

刷新窗口,将看到一个条形图。

4. 将数据源更改为 Google 电子表格

与 Google API 合作的一个强大功能是产品线之间的深度关联。可以创建一个 Google 电子表格并将其集成到应用程序中。
操作步骤
1. 访问 http://drive.google.com/(原 Google Docs)并注册/登录。
2. 创建一个新的电子表格。
3. 向电子表格中添加数据。
4. 点击“共享”按钮,将视图设置为公开。
5. 根据文档 ID 创建 API URL:
- 文档链接:https://docs.google.com/spreadsheet/ccc?key=0Aldzs55s0XbDdFJfUTNVSVltTS1ZQWQ0bWNsX2xSbVE
- API 链接:https://spreadsheets.google.com/tq?key=0Aldzs55s0XbDdFJfUTNVSVltTS1ZQWQ0bWNsX2xSbVE
6. 打开 JavaScript 文件,删除当前数据源,并用 URL 源替换:

google.load('visualization', '1.0');
google.setOnLoadCallback(init);
function init(){
    var options = {'title':'Deaths, for the 15 leading causes of death: United States, 2008',
        'width':800,
        'height':600};
    var chart = new google.visualization.ChartWrapper({
        chartType:'BarChart',
        dataSourceUrl:"https://spreadsheets.google.com/tq?key=0Aldzs55s0XbDdFJfUTNVSVltTS1ZQWQ0bWNsX2xSbVE",
        options:options,
        containerId:'chart'
    });
    chart.draw();   
}

如果有数据库操作经验,可以向数据源发送简单的 SQL 查询,仅获取想要查看的项目。例如,按不同顺序获取项目,排除 B 列,并根据 D 列(按年龄)排序:

var chart = new google.visualization.ChartWrapper({
    chartType:'BarChart',
    dataSourceUrl:"https://spreadsheets.google.com/tq?key=0Aldzs55s0XbDdFJfUTNVSVltTS1ZQWQ0bWNsX2xSbVE",
    query: 'SELECT A,E,D,C ORDER BY D',
    options:options,
    containerId:'chart'
});

刷新代码后,B 列将消失,数据将根据 D 列进行组织。最后,添加以下代码实现自动刷新:

var chart = new google.visualization.ChartWrapper({
    chartType:'BarChart',
    dataSourceUrl:"https://spreadsheets.google.com/tq?key=0Aldzs55s0XbDdFJfUTNVSVltTS1ZQWQ0bWNsX2xSbVE",
    query: 'SELECT A,E,D,C ORDER BY D',
    refreshInterval: 1,
    options:options,
    containerId:'chart'
});
chart.draw();

返回公共图表并更改其中的数据,图表将自动更新。

5. 使用选项对象自定义图表属性

可以使用 Google Charts API 创建一个烛台图,并将各种配置集成到其中。
操作步骤
1. 创建一个 HTML 文件并将其链接到 JavaScript 文件(如 08.04.candlestick.js):

<!DOCTYPE html>
<html>
    <head>
        <title>Google Charts Getting Started</title>
        <meta charset="utf-8" />   
        <script src="https://www.google.com/jsapi"></script>
        <script src="./08.04.candlestick.js"></script>  
    </head>
    <body style="background:#fafafa">
        <div id="chart"></div>
    </body>
</html>
  1. 在 08.04.candlestick.js 文件中,添加 API 加载和回调函数:
google.load('visualization', '1', {packages: ['corechart']});
google.setOnLoadCallback(init);
function init(){
  1. init 函数中,使用 google.visualization.arrayToDataTable 方法创建一个新的 DataTable 对象:
var data = google.visualization.arrayToDataTable([
    ['Mon', 10, 24, 18, 21],
    ['Tue', 31, 38, 55, 74],
    ['Wed', 50, 55, 20, 103],
    ['Thu', 77, 77, 77, 77],
    ['Fri', 68, 66, 22, 15]
], true);
  1. 创建图表的选项对象(配置对象):
var options = {
    legend:'none',
    backgroundColor:{fill:'#eeeeee',strokeWidth:2},
    bar:{groupWidth:17},
    candlestick:{hollowIsRising:true,
        fallingColor:{stroke:'red',fill:'#ffaaaa'},
        risingColor: {stroke:'blue',fill:'#aaaaff'}
    },
    enableInteractivity:false
};
  1. 使用以下代码绘制图表:
var chart = new google.visualization.CandlestickChart(document.getElementById('chart'));
chart.draw(data, options);

加载 HTML 文件后,将看到一个自定义的烛台图。

6. 为图表添加仪表盘

可以添加实时控制器,使用户能够更改数据过滤条件,以查看更多或更少的信息。
操作步骤
1. 创建一个 HTML 文件并将其链接到外部 JavaScript 文件(如 08.05.slider.js):

<!DOCTYPE html>
<html>
    <head>
        <title>Google Charts DASHBOARD</title>
        <meta charset="utf-8" />   
        <script src="https://www.google.com/jsapi"></script>
        <script src="./08.05.slider.js"></script>   
    </head>
    <body style="background:#fafafa">
        <div id="chart"></div>
        <div id="dashboard"></div>
        <div id="filter"></div>
    </body>
</html>
  1. 打开 08.05.slider.js 文件,加载 Google 可视化 API,并加载控制器包:
google.load('visualization', '1', {packages: ['controls']});
  1. 添加回调:
google.setOnLoadCallback(init);
function init(){
  1. 创建数据源,基于 2008 年 CDC 死亡率数据:
var data = google.visualization.arrayToDataTable([
    ['Age (+- 2 Years)', 'Deaths'],
    [2, 4730],
    [7, 2502],
    [12, 3149], 
    [17, 12407],
    [22, 19791],
    [27,20786],
    [32,21489],
    [37,29864],
    [42,46506],
    [47,77417],
    [52, 109125],
    [57,134708],
    [62,161474],
    [67,183450],
    [72,218129],
    [77,287370],
    [82,366190],
    [87,372552],
    [92,251381],
    [100,20892]
]);
  1. 创建一个新的仪表盘:
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard'));
  1. 创建一个滑块,并提供其连接数据源所需的信息:
var slider = new google.visualization.ControlWrapper({
    containerId: 'filter',
    controlType: 'NumberRangeFilter',
    options: {
        filterColumnLabel: 'Age (+- 2 Years)'
    }
});
  1. 创建一个图表:
var chart = new google.visualization.ChartWrapper({
    chartType: 'ScatterChart',
    containerId: 'chart',
    options: {
        legend: 'left',
        title:'Deaths, for the 15 leading causes of death: United States, 2008',
        width: 800,
        height: 600
    }
});
  1. 绑定并绘制控制器:
dashboard.bind(slider, chart).draw(data);

加载 HTML 文件后,将看到一个带有控制器的散点图,可选择想要深入研究的年龄范围。

7. 使用 Google 可视化 API 创建地理图表

可以使用基于矢量的世界地图,根据数据馈送突出显示国家。这里使用维基百科按故意杀人率列出的国家列表(最新数据)。
操作步骤
1. 创建一个新的 HTML 和 JavaScript 文件,分别命名为 08.01.geo-chart.html 和 08.01.geo-chart.js。
2. 在 HTML 文件中添加以下代码:

<!DOCTYPE html>
<html>
    <head>
        <title>Geo Charts</title>
        <meta charset="utf-8" />   
        <script src="http://www.google.com/jsapi"></script>
        <script src="./08.01.geo-chart.js"></script>
    </head>
    <body style="background:#fafafa">
        <div id="chart"></div>
    </body>
</html>
  1. 在 js 文件中,请求 Google 可视化包的地理图表功能:
google.load('visualization','1',{'packages': ['geochart']});
  1. 添加回调,当包准备好时触发 init 函数:
google.setOnLoadCallback(init);
function init(){
  1. init 函数中,将维基百科的数据格式化为适用于 Google 可视化 API 的格式:
var data = google.visualization.arrayToDataTable([
    ['Country','Intentional Homicide Rate per 100,000'],
    ['Honduras',87],['El Salvador',71],['Saint Kitts and Nevis',68],
    ['Venezuela',67],['Belize',39],['Guatemala',39], 
    ['Jamaica',39],
    ['Bahamas',36],['Colombia',33],['South Africa', 32],
    ['Dominican Republic',31],['Trinidad and Tobago',28],['Brazil',26],
    ['Dominica', 22],['Saint Lucia',22], 
    ['Saint Vincent and the Grenadines',22],
    ['Panama',20],['Guyana',18],['Mexico',18], 
    ['Ecuador',16],
    ['Nicaragua',13],['Grenada',12], 
    ['Paraguay',12],['Russia',12],
    ['Barbados',11],['Costa Rica',10 ],['Bolivia',8.9],
    ['Estonia',7.5],['Moldova',7.4],['Haiti',6.9],
    ['Antigua and Barbuda',6.8],['Uruguay',6.1],['Thailand',5.3],
    ['Ukraine',5.2],['United States',4.7 ], 
    ['Georgia',4.1],['Latvia',4.1 ],
    ['India',3.2],['Taiwan',3.0 ],['Bangladesh',2.4 ], 
    ['Lebanon',2.2],
    ['Finland',2.1 ],['Israel', 2.1], 
    ['Macedonia',1.94 ],['Canada',1.7],
    ['Czech Republic',1.67], 
    ['New Zealand',1.41],['Morocco',1.40 ],
    ['Chile',1.33], 
    ['United Kingdom',1.23 ],['Australia',1.16],
    ['Poland',1.1 ],['Ireland',0.96 ], 
    ['Italy',.87 ],['Netherlands',.86 ],
    ['Sweden',.86], 
    ['Denmark',.85],['Germany',.81 ],['Spain',0.72],
    ['Norway',0.68],['Austria',0.56],['Japan',.35] 
]);
  1. 配置图表选项:
var options = {width:800,height:600};
  1. 创建图表:
var chart = new google.visualization.GeoChart(document.getElementById('chart'));
chart.draw(data,options);

加载 HTML 文件后,将看到世界各国以突出显示的颜色反映杀人率。

8. 图表创建流程总结
操作 步骤
更改图表类型 1. 修改图表实际构造对象中的单词;2. 更改可视化库中调用的方法
使用 ChartWrapper 创建图表 1. 加载 Google API 并添加回调;2. 创建 init 函数;3. 构建数据源二维数组;4. 创建选项对象;5. 构建并渲染图表
更改数据源为 Google 电子表格 1. 访问 Google Drive 并登录;2. 创建新电子表格;3. 添加数据;4. 设置共享为公开;5. 创建 API URL;6. 修改 JavaScript 文件中的数据源
自定义烛台图 1. 创建 HTML 文件并链接到 JavaScript 文件;2. 加载 API 并添加回调;3. 创建 DataTable 对象;4. 创建选项对象;5. 绘制图表
添加仪表盘 1. 创建 HTML 文件并链接到 JavaScript 文件;2. 加载 API 并添加回调;3. 创建数据源;4. 创建仪表盘;5. 创建滑块;6. 创建图表;7. 绑定并绘制控制器
创建地理图表 1. 创建 HTML 和 JavaScript 文件;2. 请求地理图表功能;3. 添加回调;4. 格式化数据;5. 配置选项;6. 创建并绘制图表
9. 图表创建 mermaid 流程图
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(选择操作):::process
    B --> C{操作类型}:::decision
    C -->|更改图表类型| D(修改构造对象和调用方法):::process
    C -->|使用 ChartWrapper 创建图表| E(加载 API、创建函数等):::process
    C -->|更改数据源为 Google 电子表格| F(创建电子表格并集成):::process
    C -->|自定义烛台图| G(创建文件、加载 API 等):::process
    C -->|添加仪表盘| H(创建文件、加载 API 等):::process
    C -->|创建地理图表| I(创建文件、请求功能等):::process
    D --> J([结束]):::startend
    E --> J
    F --> J
    G --> J
    H --> J
    I --> J

通过以上步骤和方法,可以充分利用 Google Charts 和 Google Maps 的功能,创建出各种丰富、交互式的图表和地图。

玩转谷歌图表与地图:从基础到定制

10. 地理图表的工作原理及额外定制

地理图表的逻辑较为简单,主要有三个步骤:
1. 定义数据源 :如将维基百科的故意杀人率数据格式化为适用于 Google 可视化 API 的格式。
2. 设置图表 :配置图表的选项,如设置宽度和高度等。
3. 绘制图表 :使用 google.visualization.GeoChart 创建图表并绘制。

在操作过程中,并非所有国家都能顺利显示。若遇到问题,可搜索最新的 Google 文档,查找支持的国家列表,完整列表可查看 http://gmaps - samples.googlecode.com/svn/trunk/mapcoverage_filtered.html。

此外,还可以对地理图表进行额外的定制。例如,原地图中绿色高亮显示不太符合直观认知,可通过更新选项对象来更改颜色:

var options = {width:800,height:600,
    colorAxis: {colors: ['#eeffee', 'red']}
};

若想让较小的区域更易查看,可将渲染方式切换为基于标记的模式:

var options = {width:800,height:600,
    displayMode: 'markers',
    colorAxis: {colors: ['#22ff22', 'red']}
};

默认情况下,使用标记渲染可视化地图时,当鼠标悬停在密集区域,会有高亮缩放视图,以便更清晰地查看。

11. 不同图表操作的对比分析
操作类型 优点 缺点 适用场景
更改图表类型 操作简单,只需修改少量代码 需保证数据条目数量相同 快速切换不同类型图表展示数据
使用 ChartWrapper 创建图表 代码量少,数据源灵活 对图表创建步骤控制少 快速创建图表,不追求精细控制
更改数据源为 Google 电子表格 可利用 Google 产品线深度关联,方便更新数据 需进行一系列电子表格操作 数据经常更新,且希望实时展示在图表中
自定义烛台图 可对图表样式和交互性进行精细定制 配置选项较多,需了解各选项含义 需要展示特定样式和交互效果的金融数据等
添加仪表盘 可实现实时数据过滤,增强用户交互性 涉及多个组件创建和绑定,代码稍复杂 需要用户根据自身需求筛选数据查看的场景
创建地理图表 能直观展示地理区域的数据分布 部分国家可能显示不全 展示与地理区域相关的数据,如人口、犯罪率等
12. 图表操作的 mermaid 详细流程图
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始操作]):::startend --> B(选择图表操作):::process
    B --> C{操作类型}:::decision
    C -->|更改图表类型| D(检查数据条目数量):::process
    D -->|符合| E(修改构造对象和调用方法):::process
    E --> F(完成更改):::process
    C -->|使用 ChartWrapper 创建图表| G(加载 Google API):::process
    G --> H(创建 init 函数):::process
    H --> I(构建数据源二维数组):::process
    I --> J(创建选项对象):::process
    J --> K(构建并渲染图表):::process
    K --> L(完成创建):::process
    C -->|更改数据源为 Google 电子表格| M(访问 Google Drive 登录):::process
    M --> N(创建新电子表格):::process
    N --> O(添加数据):::process
    O --> P(设置共享为公开):::process
    P --> Q(创建 API URL):::process
    Q --> R(修改 JavaScript 数据源):::process
    R --> S(完成数据源更改):::process
    C -->|自定义烛台图| T(创建 HTML 文件):::process
    T --> U(链接到 JavaScript 文件):::process
    U --> V(加载 API 并添加回调):::process
    V --> W(创建 DataTable 对象):::process
    W --> X(创建选项对象):::process
    X --> Y(绘制图表):::process
    Y --> Z(完成定制):::process
    C -->|添加仪表盘| AA(创建 HTML 文件):::process
    AA --> AB(链接到 JavaScript 文件):::process
    AB --> AC(加载 API 并添加回调):::process
    AC --> AD(创建数据源):::process
    AD --> AE(创建仪表盘):::process
    AE --> AF(创建滑块):::process
    AF --> AG(创建图表):::process
    AG --> AH(绑定并绘制控制器):::process
    AH --> AI(完成仪表盘添加):::process
    C -->|创建地理图表| AJ(创建 HTML 和 JavaScript 文件):::process
    AJ --> AK(请求地理图表功能):::process
    AK --> AL(添加回调):::process
    AL --> AM(格式化数据):::process
    AM --> AN(配置选项):::process
    AN --> AO(创建并绘制图表):::process
    AO --> AP(完成地理图表创建):::process
    F --> AQ([结束操作]):::startend
    L --> AQ
    S --> AQ
    Z --> AQ
    AI --> AQ
    AP --> AQ

通过上述对比分析和详细流程图,可以更清晰地了解不同图表操作的特点和步骤,根据实际需求选择合适的操作方法,进一步提升使用 Google 图表和地图的效率和效果,创建出更符合需求的可视化作品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值