Slice Data Plot using API
FusionCharts Suite XT includes advanced features that offers a wide range of APIs that you can use for different stages in the ife cycle of a chart or when you interact with a chart. These features include completion of rendering of the chart, handling the radio button at runtime, etc.
This article focuses on how you can slice out the data plots of a Pie 2D chart using chart specific custom API. The chart will be rendered using FusionCharts JSP wrapper.
A chart configured to slice out the data plots of a pie2d chart, is shown below:
{
    "chart": {
        "caption": "Market Share of Web Servers",
        "plottooltext": "<b>$percentValue</b> of web servers run on $label servers",
        "showPercentValues": "1",
        "useDataPlotColorForLabels": "1",
        "enableMultiSlicing": "0",
        "showlegend": "0",
        "theme": "fusion"
    },
    "data": [
        {
            "label": "Apache",
            "value": "32647479"
        },
        {
            "label": "Microsoft",
            "value": "22100932"
        },
        {
            "label": "Zeus",
            "value": "14376"
        },
        {
            "label": "Other",
            "value": "18674221"
        }
    ]
}
         The full code for the above chart is shown below:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="fusioncharts.FusionCharts" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" />
    <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script>
    <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script>
    <title>FusionCharts | shocasing use special chart type API</title>
</head>
<body>
    <script>
        plotClickHandler = function(event){
            clickedPlot = (event.data.categoryLabel).toLowerCase();
              if (selectedItem !== clickedPlot) {
                    selectedItem = clickedPlot;
              } else{
                    selectedItem = 'none';
              }
        };
        selectedItem = "none";
        noneChecked = function(){
            FusionCharts("pie_chart").slicePlotItem(0,false);
            FusionCharts("pie_chart").slicePlotItem(1,false);
            FusionCharts("pie_chart").slicePlotItem(2,false);
            FusionCharts("pie_chart").slicePlotItem(3,false);
        }
        apacheChecked = function(){
            FusionCharts("pie_chart").slicePlotItem(0,true);
        }
        microsoftChecked = function(){
            FusionCharts("pie_chart").slicePlotItem(1,true);
        }
        zeusChecked = function(){
            FusionCharts("pie_chart").slicePlotItem(2,true);
        }
        otherChecked = function(){
            FusionCharts("pie_chart").slicePlotItem(3,true);
        }
    </script>
    <h3>shocasing use special chart type API</h3>
    <div id="chart"></div>
    <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;">
        <label style="padding: 0px 5px !important;">
            <input type="radio" name="rdGrp-options" checked="checked" onclick="noneChecked()" /> None
        </label>
        <label style="padding: 0px 5px !important;">
            <input type="radio" name="rdGrp-options" onclick="apacheChecked()" /> Apache
        </label>
        <label style="padding: 0px 5px !important;">
            <input type="radio" name="rdGrp-options" onclick="microsoftChecked()" /> Microsoft
        </label>
        <label style="padding: 0px 5px !important;">
            <input type="radio" name="rdGrp-options" onclick="zeusChecked()" /> Zeus
        </label>
        <label style="padding: 0px 5px !important;">
            <input type="radio" name="rdGrp-options" onclick="otherChecked()" /> Other
        </label>
    </div>
    <%
        String jsonData;
        jsonData = "{ 'chart': { 'caption': 'Market Share of Web Servers', 'plottooltext': '<b>$percentValue</b> of web servers run on $label servers', 'showLegend': '0', 'enableMultiSlicing': '0', 'showPercentValues': '1', 'legendPosition': 'bottom', 'useDataPlotColorForLabels': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Apache', 'value': '32647479' }, { 'label': 'Microsoft', 'value': '22100932' }, { 'label': 'Zeus', 'value': '14376' }, { 'label': 'Other', 'value': '18674221' }] }";
        FusionCharts pie_chart = new FusionCharts(
          "pie2d",
            "pie_chart",
            "450", 
            "250",
            "chart",
            "json",
            jsonData                
          );
        %>
    <%=pie_chart.render()%>
</body>
</html>
The above chart has been rendered using the following steps:
Import and resolve the dependency
fusioncharts.FusionChartsInclude the necessary libraries and components using
<script>tags. For example,fusioncharts.js,fusioncharts.theme.fusion.js.Within the
<body>:Include a
<script>tag that contains functions for slicing the data plots (in this case, clicking radio buttons acts as the trigger).Create radio buttons for slicing the data plots.
Include a
<div>tag withidsame as the value of therenderAtattribute of the instance ofFusionCharts(explained in the next step), within which the chart will be rendered.Include a
<% %>tag, where:Declare a string
jsonDataand use it to assign the chart configuration as a JSON string.Create a new instance named
pie_chartof theFusionChartsconstructor, and pass the values of its arguments:Set the chart
typeaspie2d. Find the complete list of chart types with their respective alias here.Set the
idaspie_chart.Set the
widthandheightof the chart in pixels. You can also provide them as percentages.Set the
renderAtaschart.Set the
dataFormatasjson.Set the
dataSourcetojsonDatawhich has been declared and defined above.
Include a
<%= %>tag that containspie_chart.render().