Source

jqplot-douglaz / examples / mekkoChart.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Simple Test</title>
  <!--[if IE]><script language="javascript" type="text/javascript" src="../src/excanvas.js"></script><![endif]-->
  
  <link rel="stylesheet" type="text/css" href="../src/jquery.jqplot.css" />
  <link rel="stylesheet" type="text/css" href="examples.css" />
  
  <!-- BEGIN: load jquery -->
  <script language="javascript" type="text/javascript" src="../src/jquery-1.4.1.min.js"></script>
  <!-- END: load jquery -->
  
  <!-- BEGIN: load jqplot -->
  <script language="javascript" type="text/javascript" src="../src/jquery.jqplot.js"></script>
  <script language="javascript" type="text/javascript" src="../src/plugins/jqplot.mekkoRenderer.js"></script>
  <script language="javascript" type="text/javascript" src="../src/plugins/jqplot.mekkoAxisRenderer.js"></script>
  <!-- END: load jqplot -->
  <style type="text/css" media="screen">
    body {
        margin: 15px;
        font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    }
    
    p {
        margin-top: 20px;
        margin-bottom: 20px;
    }
    
    .jqplot-target {
        margin: 60px;
    }
    
    pre {
        padding: 10px;
        background-color: #efead9;
        margin: 10px;
    }
    .jqplot-axis {
      font-size: 0.8em;
    }
    
    .jqplot-mekko-barLabel {
        font-size: 1em;
    }
    
    #chart2 .jqplot-axis {
        font-size: 0.7em;
    }
  </style>
  <script type="text/javascript" language="javascript">
  
  $(document).ready(function(){

    bar1 = [['shirts', 8],['hats', 14],['shoes', 6],['gloves', 16],['dolls', 12]];
    bar2 = [15,6,9,13,6];
    bar3 = [['grumpy',4],['sneezy',2],['happy',7],['sleepy',9],['doc',7]];
    barLabels = ['Mickey Mouse', 'Donald Duck', 'Goofy'];

    plot1 = $.jqplot('chart1', [bar1, bar2, bar3], {
        title: 'Revenue Breakdown per Character',
        seriesDefaults:{renderer:$.jqplot.MekkoRenderer},
        legend:{show:true, numberColumns:2},
        axesDefaults:{
            renderer:$.jqplot.MekkoAxisRenderer
        },
        axes:{
            xaxis:{ 
                barLabels:barLabels,
                tickOptions:{formatString:'$%dM'}
            }
        }
    });

    plot2 = $.jqplot('chart2', [bar1, bar2, bar3], {
        title: 'Revenue Breakdown per Character',
        seriesDefaults:{renderer:$.jqplot.MekkoRenderer},
        legend:{
            show:true, 
            rendererOptions:{placement: "inside"}, 
            location:'e'
        },
        axesDefaults:{
            renderer:$.jqplot.MekkoAxisRenderer, 
            tickOptions:{}
        },
        axes:{
            xaxis:{
                barLabels:barLabels,
                max: 175,
                tickOptions:{formatString:'$%dM'}
            }, 
            x2axis:{
                show:true, 
                tickMode:'even', 
                max: 175,
                tickOptions:{formatString:'$%dM'}
            }
        }
    });

    var legendLabels = ['hotels', 'rides', 'buses', 'instruments', 'totes'];
    
    plot3 = $.jqplot('chart3', [bar1, bar2, bar3], {
        title: 'Revenue Breakdown per Character',
        seriesDefaults:{renderer:$.jqplot.MekkoRenderer},
        legend:{
            show:true, 
            rendererOptions:{labels:legendLabels, placement: "outside"}, 
            location:'e'
        },
        axesDefaults:{
            renderer:$.jqplot.MekkoAxisRenderer, 
            tickOptions:{showGridline:false}
        },
        axes:{
            xaxis:{
                tickMode:"bar", 
                tickOptions:{formatString:'$%dM'}
            }, 
            x2axis:{
                show:true, 
                tickMode:'even', 
                tickOptions:{formatString:'$%dM'}
            }
        }
    });

  });
  </script>
  </head>
  <body>
<?php include "nav.inc"; ?>
      
      <p>Mekko charts make a number of customizations to the series, axes and legend.  You can create a Mekko chart by including the renderers:</p>
<pre>
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;../src/plugins/jqplot.mekkoRenderer.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;../src/plugins/jqplot.mekkoAxisRenderer.js&quot;&gt;&lt;/script&gt;
</pre>
  
  <p>Data is specified per bar in the chart.  You can specify data as an array of y values, or as an array of [label, value] pairs.  Note that labels are used only on the first series.  Labels on subsequent series are ignored:</p>
<pre>
bar1 = [['shirts', 8],['hats', 14],['shoes', 6],['gloves', 16],['dolls', 12]];
bar2 = [15,6,9,13,6];
bar3 = [['grumpy',4],['sneezy',2],['happy',7],['sleepy',9],['doc',7]];
</pre>

  <p>If you want to place labels for each bar under the axis, you use the barLabels option on the axes.  The bar labels can be styled with the ".jqplot-mekko-barLabel" css class.</p>
<pre>
barLabels = ['Mickey Mouse', 'Donald Duck', 'Goofy'];
axes:{xaxis:{barLabels:barLabels}}
</pre>

    <div id="chart1" style="width:500px; height:300px;"></div>
    
    <p>You can add a secondary x axes, and the tick spacing of the axes can be separately controlled with the "tickMode" option.  "bar" will produce tics at bar boundaries, "even" will produce evenly spaced ticks.  If you set the axes max greater than the sum of the data range (the maximum x value), the plot will be padded.  Note that you should set the max on both axes to the same value.</p>

<pre>
axes:{
    xaxis:{
        barLabels:barLabels,
        max: 175
    }, 
    x2axis:{
        show:true, 
        tickMode:'even', 
        max: 175
    }
}
</pre>

    <p>Additionally, the legend can be placed "outside" (the default for a mekko chart) or "inside" of the grid area with the "placement" option on the legend renderer.</p>

<pre>
legend:{
    show:true, 
    rendererOptions:{placement: "inside"}, 
    location:'e'
},
</pre>
    
    <div id="chart2" style="width:500px; height:300px;"></div>
    
    <p>Legend labels can be specified independently of the series with the "labels" option on the legend.  These will override any labels specified with the series.
    
<pre>
legendLabels = ['hotels', 'rides', 'buses', 'instruments', 'totes'];

legend:{
    show:true, 
    rendererOptions:{labels:legendLabels, placement: "outside"}, 
},    
</pre>

    <div id="chart3" style="width:500px; height:300px;"></div>
  </body>
</html>