个性化阅读
专注于IT技术分析

jQuery中的深入FusionCharts教程

可视化数据使其更易于阅读

在进行数据分析时, 大多数公司都依赖MS Excel或Google表格。尽管这些工具功能强大, 但很难注意到趋势, 更不用说从大量电子表格数据中了解任何信息了。处理以这种方式显示的数据并不是很有趣, 但是一旦向数据中添加了可视化, 事情就变得更易于管理, 而这就是今天的教程的主题-使用jQuery制作交互式图表。

处理电子表格数据很无聊。

很难从电子表格数据行中注意到趋势, 但是一旦添加可视化…

鸣叫

我将在此项目中使用FusionCharts的JavaScript图表库, 因为它提供了90多个图表的大型库, 与每个浏览器兼容, 并且易于使用。它还提供了一个专用的jQuery插件, 使我们的工作更加轻松。

首先, 我将使用FusionCharts的核心JavaScript库及其jQuery图表插件制作基本图表, 然后向其中添加下钻功能。向下钻取允许你通过单击数据图从一个图表转到另一个图表。

术语”数据图”是上下文相关的;它指的是柱形图中的列, 折线图中的线, 饼图中的饼图。通过单击父图表中的数据图, 可以看到一个子图表, 该子图表显示了更深一层的相对数据。

单击父图表上的数据图将弹出一个子图表。

单击父图表上的数据图将弹出一个子图表。

了解FusionCharts

在开始本教程之前, 我们先介绍一下FusionCharts的基本结构。每个图表均由以下关键元素组成:

  • 标题:图表上的标题。它说明了要绘制的内容。
  • 子标题:标题下方的文本, 用于指定其他图表信息, 通常会指出收集数据的时间范围。
  • 图例:这将为图表上的每个数据图显示一个符号。单击特定的图例图标可以启用或禁用特定图。
  • 数据图:这些是图表上的数据表示。数据图可以是柱状图中的列, 折线图中的线或饼图中的饼图切片。
  • 工具提示:将鼠标悬停在数据图上时显示的文本, 用于传达有关该特定数据图的其他信息。
FusionChart的碎片。

制作明细表

在开始之前, 这是我们将在本教程中制作的图表的屏幕截图。你可以在此处查看JSFiddle或在我的GitHub存储库上访问该项目的完整源代码。

本教程的最终jquery项目的预览。

我已将制作明细表的过程分为五个步骤, 因此我们开始吧。

步骤1:包括JavaScript文件并创建图表容器

首先, 我们需要使用<script>标记包含项目所依赖的所有JS文件。如果该页面尚不存在, 请创建一个空白的HTML文档, 并在<head>部分中包含以下文件。现在我们需要以下四个文件:

  • 精简版jQuery
  • FusionCharts的主要JS库(包括Fusioncharts.js和Fusioncharts.charts.js)
  • FusionCharts的jQuery插件

现在, 我们的<head>部分将如下所示:

<!-- jQuery -->
<script type="text/javascript" src="jquery.min.js"></script>

<!-- FusionCharts JS file -->
<script type="text/javascript" src="js/fusioncharts.js"></script>
<script type="text/javascript" src="js/fusioncharts.charts.js"></script>

<!-- jQuery charts plugin -->
<script type="text/javascript" src="js/jquery-plugin.js"></script>

<!-- custom theme file (optional) -->
<script type="text/javascript" src="js/srcmini.js"></script>

现在我们已经包含了所有依赖项, 是时候为图表创建容器<div>并使用以下HTML代码将其嵌入到我们的页面中了:

<div id="drill-down-chart">drill-down chart will load here</div>

现在, 我们可以在代码中使用jQuery的$选择器来选择它:

$("#drill-down-chart")

注意:如果页面上有多个图表, 则每个图表都需要一个具有唯一ID的单独容器。

可视化数据使其更易于阅读。

步骤2:获取和构建数据

FusionCharts接受JSON和XML格式的数据, 但我选择使用JSON, 因为它已成为跨Web应用程序交换数据的标准格式。基本图表的JSON数据数组包含每个数据图的对象, 并且在每个数据图对象内定义其各自的标签和值。该结构如下所示:

"data": [{
  "label": "Q1", "value": "850000", }, {
  "label": "Q2", "value": "2070000", }, ...
// more data objects ]

当我们绘制深入图表时, 其JSON变得更加复杂。父图和子图之间的链接需要在数据数组的每个对象内再有一个键/值对。新键(毫不奇怪, 称为链接)将包含子图表的ID, 该子图表将在你单击其父数据图时获得。定义子图表ID的格式为newchart-dataFormat-childId。由于我们使用的是JSON, 因此我们知道链接的任何内容都将类似于newchart-json-childId。这是我们为图表定义的方式:

"data": [{
  "label": "Q1", "value": "850000", "link": "newchart-json-q1"
}, {
  "label": "Q2", "value": "2070000", "link": "newchart-json-q2"
}, ...
// more data objects]

步骤3:插入图表数据

数据准备就绪后, 就该使用jQuery插件提供的insertFusionCharts方法将图表插入页面中了:

$("#drill-down-chart").insertFusionCharts({
  type: 'column2d', id: "mychart", width: '100%', height: '450', dataFormat: 'json', dataSource: {
    "chart": {
      "caption": "Quarterly Revenue for 2015", "paletteColors": "#9EA5FC", "xAxisName": "Quarter (Click to drill down)", "yAxisName": "Revenue (In USD)", // more chart configuration options
    }, "data": [
      // see step-2 for explanation
    ], "linkedData": [
      // explained in step-4
    ]
  }
})

让我们分解上面的代码片段:

  • type定义了我们要绘制的父图表的类型。在这种情况下, 请输入column2d。 FusionCharts库中的每个图表都有一个唯一的别名。你可以在FusionCharts的图表列表页面上找到要绘制的图表的别名。
  • id设置图表的唯一ID, 请勿与包含我们图表的<div>元素的ID混淆。图表的ID用于选择要应用事件处理程序和调用方法的图表。我们将在步骤5中使用它。
  • 宽度和高度以像素或百分比为单位设置图表的尺寸。 100%宽度告诉图表占据整个容器宽度。
  • 我们使用dataFormat属性定义数据格式。我们在示例中使用JSON, 但是还有其他可接受的数据格式, 例如XML URL。要了解有关数据格式的更多信息, 请参阅FusionCharts的官方文档页面。
  • dataSource包含图表的实际内容, 其中的图表对象包含图表的配置选项, 例如标题和子标题。数据数组应该看起来很熟悉, 因为我们是在步骤2中完成的(它包含要绘制的数据), linkedData包含子图表的内容(单击父图表上的数据图表后得到的图表)。

相关:雇用自由职业大数据架构师的前3%。

步骤4:为子图表创建链接数据数组

现在我们已经定义了父图表, 是时候为每个数据图创建一个子图表了, 该过程与创建父图表非常相似。在” insertFusionCharts”方法中创建的linkedData数组将为每个子图表定义一个单独的对象。第一个子图表的数据如下所示:

"linkeddata": [{
      "id": "q1", "linkedchart": {
        "chart": {
          "caption": "Monthly Revenue", "subcaption": "First Quarter", "paletteColors": "#EEDA54, #A2A5FC, #41CBE3", "labelFontSize": "16", // more configuration options
        }, "data": [{
          "label": "Jan", "value": "255000"
        }, {
          "label": "Feb", "value": "467500"
        }, //more data]
      }
    }, //content for more child charts

id是我们在步骤2中定义的单个子图表的ID。linkedChart与步骤3中的dataSource相似, 因为它包含该图表的实际内容。图表对象中还有许多其他属性, 我将在下一节”使用图表属性改进设计”中详细介绍。

步骤5:自定义向下钻取配置

多种图表类型

到目前为止, 我们的示例代码使父图表和子图表共享相同的图表类型。如果要向下钻取到其他图表类型(例如, 从列到饼图), 请通过绑定fusionchartsrendered事件来完成。

$('#drill-down-chart').bind('fusionchartsrendered', function(event, args) {
  FusionCharts.items['mychart'].configureLink({
    type: "doughnut2d", overlayButton: {
      message: 'BACK', // Set the button to show diff message 
      bgColor: '#FCFDFD', borderColor: '#cccccc'
    }
  });
});

在上面的代码中, fusionchartsrendered事件将调用configureLink方法, 该方法定义所有子图表的类型以及任何叠加按钮选项。你还可以为每个子图表指定单独的图表类型。 configureLink方法中有很多可用的选项, 因此你可能会发现从FusionCharts中查看其API参考文档很有用。

不同div中的渲染图

你可以做的另一件很酷的事情是将子图表呈现在不同的容器中, 而不是与其父容器相同的容器中。为此, 请在父图表容器之后定义一个单独的HTML <div>容器, 并将其ID传递给renderAt属性, 如下所示:

$('#chart-container').bind('fusionchartsrendered', function(event, args) {
  FusionCharts.items['mychart'].configureLink({
    type: "doughnut2d", renderAt:"chart-container2", overlayButton: {
      message: 'BACK', // Set the button to show diff messafe
      bgColor: '#FCFDFD', borderColor: '#cccccc'
    }
  });
});

赋予renderAt属性的值指定子图表将在其中呈现的<div>的ID(chart-container2)。

使用图表属性改善设计

在学习完本教程后, 你将获得功能图表, 但如果按原样进行操作, 则可能会有些丑陋。要进行更具吸引力的演示, 你需要使用化妆品的”图表属性”。图表属性在图表对象内部定义, 并用于自定义渲染选项。在查看以下关键可配置属性时, 你可能会发现参考FusionCharts说明图很有用:

  • PaletteColors定义数据图的颜色。如果你在此处提供单一颜色, 则所有列均为该颜色。如果你提供多种颜色, 则第一列将采用第一个值, 第二列将采用第二个值, 依此类推。
  • plotSpacePercent控制列之间的空间。缺省值为20(值是整数, 但单位是百分比), 允许范围是0-80。零值将使列聚拢并彼此粘在一起。
  • baseFont定义图表的字体系列。你可以使用任何喜欢的字体。我在图表中使用了Google的Open Sans。只需在HTML页面中包含外部字体文件, 即可在图表中使用它。
  • plotToolText使你可以自定义工具提示。通过使用$ label和* $ dataValue等宏, 你可以从<div>内部显示有关特定数据图的特定信息, 然后使用内联CSS设置<div>的样式。这是我在示例中所做的:
"plotToolText": "<div style='font-size: 16px; text-align: center;'>$label: $dataValue</div>"
  • 主题允许你在其他文件中定义图表属性并在此处应用一次, 而不会使图表对象杂乱无章。你可以在项目的GitHub存储库的JS文件夹中找到本教程的主题文件-srcmini.js-。

这就是我要介绍的全部内容, 但是图表有一百多个属性, 因此, 如果你想进一步探索, 请访问FusionCharts的图表属性页面并搜索你的特定图表类型。

更多FusionCharts和jQuery资源

尽管我已经介绍了使用jQuery创建向下钻取图表时最重要的元素, 但是当你尝试自己做时, 很有可能需要一些帮助。目前, 这里有一些其他资源:

  • jQuery图表插件:为获得启发, 请访问官方jQuery图表插件页面以查看一些实时示例。
  • 说明文件:如果你无法找出答案, 则应该首先查看文件。这是jQuery插件和追溯图表(也称为链接图表)的便捷链接。
  • 演示:每个图表库均提供实时样本以展示其功能, 而FusionCharts也不例外。如果需要一些想法, 请访问其演示库, 其中包含800多个实时示例, 并提供完整的源代码。你尝试制作的东西很有可能已经存在。无需从头开始;只是拨弄小提琴, 然后从那里开始!
  • 更多扩展:如果你不使用原始JavaScript或jQuery, 则可以在此页面上浏览FusionCharts提供的更多插件和包装。它们具有适用于各种库和框架的专用插件, 例如Angular, React, Java, ASP.NET等。

PS:我将在下面的评论部分中闲逛, 因此随时发布你可能对我的文章提出的任何问题。我很乐意为你服务!

相关:用于预测性社交网络分析的数据挖掘

赞(0)
未经允许不得转载:srcmini » jQuery中的深入FusionCharts教程

评论 抢沙发

评论前必须登录!