65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Google Chart API 的图表设计器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.43/5 (6投票s)

2008年4月27日

CPOL

4分钟阅读

viewsIcon

38232

图表设计器是一个用 JavaScript 编写的应用程序,允许动态创建图表和图形。

引言

图表设计器是一个在线 JavaScript 应用程序,允许您动态创建图表。我们大多数人使用 MS-Excel 或 MS-Word 创建图表,这需要一些工具知识。图表设计器为您提供了创建图表的相同功能。它基本上是 Google Chart API 的实现。任何人都可以为自己的用途创建这种应用程序,因为它提供了极大的便利和轻松;您只需提供图表的数据并单击一个按钮,您想要的图表就会为您准备好。图像将是 PNG 格式,因此您可以轻松使用它。以下是该应用程序:www.chartdesigner.cjb.net

Google Chart API 基础知识

Google Chart API 可以动态生成可供任何 Web 应用程序使用的图表。可以使用各种类型的图表,例如

  • 折线图
  • 饼图
  • 迷你图
  • 条形图
  • 维恩图
  • 散点图
  • 雷达图
  • 映射
  • Googl-o-meter

Google Chart API 返回 PNG 格式的图像以响应 URL。对于每种图像类型,您可以指定属性,例如大小、颜色和标签。动态生成图表的关键是以下 URL:http://chart.apis.google.com/chart?cht=p3&chd=s:hW&chs=250x100&chl=Hello|World

每个图表都必须提供三个必需的属性

chart type => cht
chart size  => chs
chart data => chd

还有一个第四个参数,地理区域,仅用于地图。有关 Google Chart API 的更多详细信息,请访问:http://code.google.com/apis/chart/

如何使用 Chart API

正如我上面提到的,您所要做的就是使用 URL。让我逐步解释一下我所做的事情。

HTML 代码

在 HTML 中,我有一个下拉菜单,其中包含所有图表类型。在其 onchage() 事件中,将调用一个函数 GenerateAttributes() 方法,该方法将动态生成用户选择的图表的属性。以下代码解释了组合框的构造。

<select name="list" size="1" 
        class="style1" id="list" tabindex="0" 
        onchange=" GenerateAttributes()"  önfocus="help(4)">
  <option value="select">-Select One-</option>
  <option value="1"> Line Chart </option>
  <option value="2">Sparkline</option>
  <option value="3">Bar Chart</option>
  <option value="4">Pie Chart</option>
  <option value="5">Venn Diagram</option>
  <option value="6">Scatter Plot</option>
  <option value="7">Radar Chart</option>
  <option value="8">Map</option>
  <option value="9">Google-o-meter</option>
</select>

图表数据、大小和颜色的控件也用于 body 部分,因为没有必要动态生成这些文本框,因为数据、大小(强制)和颜色适用于所有图表。

img 标签用于显示动态生成的图表

<img id="chart"/> 

div 标签指定的区域将包含在调用 GenerateAttributes() 函数时将生成的所有 HTML。

< div id="opt"> </div>

JavaScript 代码

从这里开始,真正的代码开始。在脚本中,有三个函数:GenerateAttributes(),它在下拉菜单的 onchage 事件上调用,CreatChart(),它在按钮的 onclick 事件上调用,以及 map() 函数,该函数仅在用户从下拉列表中选择地图时调用。属性的动态生成使用 innerHTML 完成。如果用户从下拉菜单中选择折线图,则执行以下代码

function GenerateAttributes()
{
    var list=document.getElementById('list')
            
    if(list[1].selected) // line
    {
        opt.innerHTML="*Line Chart Type:<br><input type=radio" + 
                      "  önclick=func1() name=line value=lc>multiple " + 
                      "data sets for multiple lines."
        opt.innerHTML=opt.innerHTML+"<br><input type=radio " + 
                      "önclick=func2() name=line value=lxy>pair " + 
                      "of data sets for each line. "        
    }
}

当用户选中第一个单选按钮时,将调用一个函数 func1(),该函数会将图表的类型设置为“lc”,或者在选择第二个单选按钮的情况下,将设置为“lxy”。

function func1()
{ type="lc" }

function func2()
{ type="lxy" }

像这样,您可以实现所有想要动态生成的属性;确保全局定义将由其他函数使用的变量。CreatChart() 在按钮的 onclick() 事件上执行。来自 HTML 中创建的文本框的值被放入变量 colorsizedata 中。请注意,全局定义的 title 变量包含来自文本框的值,该文本框是根据用户选择列表的第一个元素动态生成的。然后将这些变量传递给图像的源。

function CreatChart()
{
    var color=ccolor.value
    var size=csizew.value+"x"+csizeh.value
    var data=cdata.value

    var list=document.getElementById('list')
    if(list[1].selected)
    {
        title=ctitle.value
        chart.src="http://chart.apis.google.com/chart?cht="+type+
                  "&chtt="+title+"&chco="+color+
                  "&chd=t:"+data+"&chs="+size+"";
    }
}

感谢和歉意

我要感谢 Akber Zaidi 先生,他在完成这项任务中给予了我很大的帮助和鼓励。我也要道歉,因为我知道我的代码中会有很多错误,但我是一个 JavaScript 初学者,说实话,这是我的第一个 JavaScript 代码,所以我没有专业地编写它。而且,我还没有实现 Google Chart API 的所有功能。但是,我已经投入了所有精力和精力来实现我的目标。

© . All rights reserved.