先来看个效果
可以看到上面有个饼形图,这个就是使用google api生成的图片。
http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250×100&chl=Hello|World
直接在浏览器中输入这个地址,你可以看到这个效果
简单的说,只要一串url参数就可以绘画出图形报表了。
在网页中使用就可以引入一张图形报表(折线图、柱状图、饼图、维恩图、散点图)了。还自己可以设定图表尺寸、颜色和图例哦。
看下怎么操作
地址 http://chart.apis.google.com/chart?
您可以使用任意多个参数,如下图:
http://chart.apis.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld&chxt=x,y&chxl=0:|Mar|Apr|May|June|July|1:||50+Kb
参数解释:
http://chart.apis.google.com/chart?
Chart API 调用地址。&
参数分隔符。chs=200x125
图表尺寸。chd=s:helloWorld
图表数据值。cht=lc
图表类型。chxt=x,y
显示 x、y 轴坐标。chxl=0:|Mar|Apr|May|June|July|1:||50+Kb
x、y 轴坐标值。
你可以在网页中使用img
元素插入图表,如:
注意:在HTMLimg
元素中,URL 属性中&
字符应书写为转义字符&
。
必须、可选参数
所有请求必须包含以下参数:
- 图表尺寸
- 图表数据
- 图表类型
其它参数均为可选参数,各类型图表有效参数如下:
参数 | 柱状图 | 折线图
谱线图 |
雷达图 | 散点图 | 维恩图 | 饼图 | 仪表图 | 地图 |
---|---|---|---|---|---|---|---|---|
数据颜色 | √ | √ | √ | √ | √ | √ | √ | √ |
区域、背景填充 | √ | √ | √ | √ | √ | √ | 仅背景 | 仅背景 |
数值缩放 | √ | √ | √ | √ | √ | √ | √ | |
线性过渡填充 | √ | √ | √ | √ | √ | 仅背景 | ||
线性条纹填充 | √ | √ | √ | √ | √ | 仅背景 | ||
图表标题 | √ | √ | √ | √ | √ | √ | ||
图表图例 | √ | √ | √ | √ | √ | |||
多轴标注 | √ | √ | √ | √ | ||||
网格线 | √ | √ | √ | √ | ||||
形状标记 | √ | √ | √ | √ | ||||
水平区间填充 | √ | √ | √ | √ | ||||
垂直区间填充 | √ | √ | √ | √ | ||||
折线样式 | √ | √ | √ | |||||
数据区块填充 | √ | √ | √ | |||||
柱形、间隔宽度 | √ | |||||||
柱状图基准线 | √ | |||||||
饼图、仪表图标注 | √ | √ |
图表尺寸
参数格式:chs=<像素宽度>x<像素高度>
例如:chs=300x200
,表示一个 300 像素宽、200 像素高的图表。
单个图表最大尺寸为 300,000 平方像素,宽高最大为 1000 像素,以下尺寸均为最大可用尺寸:1000×300,300×1000,600×500,500×600,800×375 和 375×800 等。
地图最大尺寸 440 像素宽和 220 像素高。
尺寸过小时,饼图将仅显示部分图表。饼图建议尺寸:
- 二维饼图:宽度约为高度两倍。
- 三维饼图:宽度约为高度两倍半。
图表数据
图表数据有三种格式:
- 文本编码 使用正数 0 至 100 之间的浮点数。配合数值缩放参数使用时,也可以使用负数。注意负数对地图图表无效。每十个数值占据 5 个像素,在仅使用整数的情况下,适用于 500 像素以内的图表。如需要更高精度,可使用一位小数数字(如 92.6)。文本编码可用于所有类型的图表,但同时也是 URL 地址最长的数据编码形式。
- 简单编码 使用大小写字母与数字,
A
代表0
,B
代表1
,直至9
代表61
,共包含 62 个数值。每个数值占据 5 个像素,适用于 300 像素大小的折线图和柱状图,所有图表类型都可以使用简单编码数据。该编码类型数据的图表 URL 地址长度最短。 - 扩展编码 使用一对字母数字表示一个数据(还有其它字符,下文详解),
AA
代表0
,AB
代表1
,直至..
代表4095
。包含 4096 个数值,适用于高精度或大型图表。该编码类型数据的图表 URL 地址长度是简单编码的两倍。
注意:配合数据转换程序可更加轻松的使用文本编码和扩展编码,参考 JavaScript 编码示例。其它开发人员贡献的代码可在讨论组和链接汇总中找到。
文本编码
文本编码格式为
chd=t:<数值字符串>
其中<数值字符串>
为0.0
至100.0
的浮点数、-1
(负一)和|
(竖线)。
含义如下
- 浮点数字
0.0
= 0,以此类推100.0
= 100。 - 负一
-1
表示空值。 - 竖线
|
为数据分组符号。
示例:chd=t:10.0,58.0,95.0|30.0,8.0,63.0
注意:文本编码中,可将数值转换为最大值的百分比来提供数据。
数值缩放文本编码
文本编码与数值缩放各一个参数:
chd=t:<数值字符串>
chds=<第1组数据最小值>,<第1组数据最大值>,<第n组数据最小值>,<第n组数据最大值>
其中
<数值字符串>
内容为任意正负浮点数字。<第1组数据最小值>
内容为第1组数据转换后的最小值。<第1组数据最大值>
内容为第1组数据转换后的最大值,省略时默认为100。<第n组数据最小值>
内容为第n组数据转换后的最小值。<第n组数据最大值>
内容为第n组数据转换后的最大值,省略时默认为100。
注意
- 对地图图表无效。
- 超出范围的值将被忽略。
- 如果要设置多组数据,请用竖线
|
分割。
示例:chd=t:30,-60,50,120,80&chds=-80,140
简单编码
简单编码格式为
chd=s:<数值字符串>
其中<数值字符串>
可包含a-z
、A-Z
、0-9
、_
和,
。
含义如下
- 大写字母
A
= 0、B
= 1,以此类推,Z
= 25。 - 小写字母
a
= 26、b
= 27,以此类推,z
= 51。 - 数字
0
= 52,以此类推,9
= 61. - 下划线
_
表示空值。 - 逗号
,
为数据分组符号。
扩展编码
文本编码格式为
chd=e:<数值字符串>
其中<数值字符串>
为成对出现的A-Z
、a-z
、0-9
、连字符-
、小数点.
、下划线_
或逗号,
。
含义如下
AA
= 0、AZ
= 25、Aa
= 26、Az
= 51、A0
= 52、A9
= 61、A-
= 62、A.
= 63、BA
= 64、BZ
= 89、.A
= 4032、.Z
= 4057、.a
= 4058、.z
= 4083、.0
= 4084、.9
= 4093、.-
= 4094、..
= 4095。- 两个下划线
__
表示空值。 - 逗号
,
为数据分组符号。
JavaScript 数值转换代码
如您所知,使用程序来自动将数值转换为 Chart API 数值比手动转换快捷得多。
下边这段 JavaScript 代码用于将数据转换为简单编码格式。第一个参数需为数据数组,负数将被转换为空值_
。
第二个参数为数据中最大值。在折线图和柱状图中,如果您希望图表顶端与最大值间有一定空间,可以使此参数值大于数据中最大值。
var simpleEncoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
function simpleEncode(values,maxValue) {
var chartData = ['s:'];
for (var i = 0; i < values.length; i++) {
var currentValue = values[i];
if (!isNaN(currentValue) && currentValue >= 0) {
chartData.push(simpleEncoding.charAt(Math.round((simpleEncoding.length-1) * currentValue / maxValue)));
} else {
chartData.push('_');
}
}
return chartData.join('');
}
向simpleEncode
函数传递一个数值数组(values
)和最大值(maxValue
),示例中最大值参数大于数组值最大值,可使图表顶端与最大值间有一定空间。
var valueArray = new Array(0,1,4,4,6,11,14,17,23,28,33,36,43,59,65);
var maxValue = 70;
simpleEncode(valueArray,maxValue);
图表粒度指导
不要为图表设定过多数据点。例如,显示布兰妮·斯皮尔斯过去十年的流行程度,如果每天搜索量作为一个数据点的话,将有 3,600 个数据点,对于 URL 来说数据太多了,Chart API 也不会生成粒度如此密的图表—— 1024 像素宽的显示器上每个数据点之占据四分之一个像素。下边的示例解释这个问题。
200×100 像素图,20 个数据点(每个数据点占 10 个像素)
40 个数据点(每个数据点占 5 个像素)
80 个数据点(每个数据点仅占 2.5 个像素)
图表类型
目前可用的图表类型:
- 折线图
- 谱线图
- 柱状图
- 饼图
- 维恩图
- 散点图
- 雷达图
- 地图
- 仪表图
折线图
折线图参数为
cht=<折线图类型>
<折线图类型>
可选择lc
或lxy
。
lc
类型图表,多组数据将绘制为多条数据线。lxy
类型图表每条数据线需要两组数据。
参数 | 说明 | 示例 |
---|---|---|
cht=lc |
直线图,x 轴方向均匀分布。 |
|
cht=lxy |
每条数据线使用两组数据,第一组指定 x 轴坐标,第二组指定 y 轴坐标。
第一组数据为空时数据线将在 x 轴均匀分布。因为示例使用文本编码,所以空值为 数据点形状使用参数 |
|
谱线图
谱线图图表类型参数为
cht=ls
谱线图可用参数与折线图相同,唯一的区别是谱线图默认不显示轴线,可用折线图多轴标注参数显示轴线。
柱状图
柱状图参数为
cht=<柱状图类型>
<柱状图类型>
可选择bhs
、bhg
、bvs
和bvg
。
- 多组数据将绘制为层叠柱状图。
- 设置多组数据的方法请参看数据格
参数 | 说明 | 示例 |
---|---|---|
cht=bhs
|
水平(Horizontal)或垂直(Vertical)柱状图。
第一个示例设置了一组数据。 第二个示例设置了两组数据。 多组数据将绘制为层叠柱状图,所以必须为每组数据设置颜色参数,甚至可以为每个数据值设置颜色,具体参看颜色一节。 第二个示例未使用数值缩放,所以大于 100 的部分超出范围没有显示。 第三个示例使用了数值缩放,图表显示正确。 |
cht=bhs chco=4d89f9
|
cht=bhg
|
水平(Horizontal)或垂直(Vertical)独立柱状图,可设定颜色,多组数据将分别绘制。 | cht=bhg chco=4d89f9,c6d9fd
|
chbh |
柱状图尺寸处理方法与其它类型图表不同。
对于垂直柱状图 所以您可以指定更细的柱状图图表。
注意:若第三个参数(组间间隔)未设置,则默认为第二个参数(组内间隔)一半。 |
|
饼图
饼图参数为
cht=<饼图类型>
<饼图类型>
可选择p
或p3
。
- 仅支持一组数据,后续数据将被忽略。
- 更多可用参数请参看可选参数。
注意:Google Chart API 根据图表尺寸参数chs
中宽度或高度的最小值决定饼图半径。当设置尺寸偏小时,图表将不能完整显示。如果使用标注,请将宽度设置为高度的两倍以上。
参数 | 说明 | 示例 |
---|---|---|
cht=p |
平面饼图。
未设定颜色时,饼图颜色将在橘黄色和浅黄色间插值计算出。设置颜色参数请参看颜色一节。 使用 |
|
cht=p3 |
三维饼图。
使用 |
|