| 
<?php 
include_once "../d3.classes.inc.php";
 ?>
 <a href="http://mbostock.github.com/d3/tutorial/bar-1.html">
 A Bar Chart 1
 </a>
 
 <hr>
 <script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?2.7.2"></script>
 <style>
 .chart div {
 font: 10px sans-serif;
 background-color: steelblue;
 text-align: right;
 padding: 3px;
 margin: 1px;
 color: white;
 }
 .chart rect {
 stroke: white;
 fill: steelblue;
 }
 </style>
 
 <script>
 // definition
 
 <?php
 # create data
 # hack, php has no literal object
 $data = d3::variable(
 f3()->add(d3::concat("return ", d3()->range(10)->map(
 f3("i")->add(d3::concat("return ", o3(array("x" => d3::concat("i","/", 9) , "y"=> d3::unescape(Math()->random())))))
 ))), "data"
 );
 
 echo $data;
 ?>
 
 var d = data();
 console.log(d);
 
 <?php
 
 $data = d3::variable(
 array(4, 8, 15, 16, 23, 42)
 , 'data'
 );
 echo $data;
 ?>
 
 <?php
 # create x
 $x = d3::variable(
 d3()
 ->scale(d3::property)
 ->linear()
 ->domain(array(0, d3()->max($data->getVar())))
 ->range(array(0,420))
 , "x"
 );
 echo $x;
 ?>
 
 <?php
 # create y
 $y = d3::variable(
 d3()
 ->scale(d3::property)
 ->ordinal()
 ->domain($data->getVar())
 ->rangeBands(array(0,120))
 , "y"
 );
 echo $y;
 
 ?>
 
 
 <?php
 # create hr element
 echo d3()->select("body")->append("hr");
 ?>
 
 
 <?php
 # first chart
 $d = new d3();
 $d->select("body")
 ->append("div")
 ->attr("class", "chart")
 ->selectAll("div")
 ->data($data->getVar())
 ->enter()
 ->append("div")
 ->style("width", function ($d){ return $d * 10 + "px";})
 ->text(function($d){ return $d;})
 ;
 echo $d;
 
 ?>
 
 <?php
 # create hr element
 echo d3()->select("body")->append("hr");
 ?>
 
 
 <?php
 # second chart
 echo d3()->select("body")
 ->append("svg")
 ->attr("class", "chart")
 ->attr("width", 420)
 ->attr("height", d3::concat(20,'*', 'data.length'))
 ->selectAll("rect")->data($data->getVar())
 ->enter()->append("rect")
 ->attr("y", function ($d, $i){ return $i * 20;})
 ->attr("width", $x->getVar())
 ->attr("height", 20)
 ;
 
 
 ?>
 
 
 <?php
 # create hr element
 echo d3()->select("body")->append("hr");
 ?>
 
 
 <?php
 # third chart
 $chart = d3::variable(
 d3()->select("body")
 ->append("svg")
 ->attr("class", "chart")
 ->attr("width", 440)
 ->attr("height", 140)
 ->style("margin-left", "32px")
 
 ->append("g")
 ->attr("transform", "translate(10,15)")
 , "chart"
 );
 echo $chart;
 
 ?>
 
 
 <?php
 
 echo d3($chart->getVar())
 ->selectAll("line")
 ->data( d3( $x->getVar() )->ticks(10))
 ->enter()->append("line")
 ->attr("x1", $x->getVar())
 ->attr("x2", $x->getVar())
 ->attr("y1", 0)
 ->attr("y2", 120)
 ->attr("stroke", "#ccc");
 
 ?>
 
 
 <?php
 
 echo d3($chart->getVar())
 ->selectAll(".rule")
 ->data( d3( $x->getVar() )->ticks(10))
 ->enter()->append("text")
 ->attr("x", $x->getVar())
 ->attr("y", 0)
 ->attr("dy", -3)
 ->attr("text-anchor", "middle")
 ->text(d3::variable("String"));
 
 ?>
 
 
 <?php
 
 echo d3($chart->getVar())
 ->selectAll("rect")
 ->data($data->getVar())
 ->enter()->append("rect")
 ->attr("y", $y->getVar())
 ->attr("width", $x->getVar())
 ->attr("height", d3($y->getVar())->rangeBand() );
 ?>
 
 
 <?php
 
 echo d3($chart->getVar())
 ->selectAll(".bar")
 ->data($data->getVar())
 ->enter()->append("text")
 ->attr("class", "bar")
 ->attr("x", $x->getVar())
 ->attr("y", function($d) {return $y($d) + $y->rangeBand() / 2;})
 ->attr("dx", -3)
 ->attr("dy", ".35em")
 ->attr("text-anchor", "end")
 ->text(d3::variable("String"));
 
 ?>
 
 
 <?php
 
 echo d3($chart->getVar())
 ->append("line")
 ->attr("y1", 0)
 ->attr("y2", 120)
 ->style("stroke", "#000")
 ;
 
 
 ?>
 
 
 </script>
 
 |