4

I am trying to plot a bar chart by taking two columns from my database and converting it to JSON using json_encode in PHP (probc.php file)

I referred to this example here to construct a bar chart - BAR CHART EXAMPLE

After doing so, I changed the attributes letters and frequency to the column names I wanted to use (fphour for x-axis and fpprob for y-axis), and also changed d3.tsv to d3.json and included the relevant file (probc.php). But I do not get any results on running my file. Just a blank vanilla page. Please help!

Here's the code

<script src="http://d3js.org/d3.v3.min.js"></script>
<script>

var margin = {top: 20, right: 20, bottom: 30, left: 40},
    width = 960 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;

var x = d3.scale.ordinal()
    .rangeRoundBands([0, width], .1);

var y = d3.scale.linear()
    .range([height, 0]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .ticks(10, "%");

var svg = d3.select("body").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

d3.json("probc.php", type, function(error, data) {
  x.domain(data.map(function(d) { return d.fphour; }));
  y.domain([0, d3.max(data, function(d) { return d.fpprob; })]);

  svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis);

  svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
    .append("text")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", ".71em")
      .style("text-anchor", "end")
      .text("Frequency");

  svg.selectAll(".bar")
      .data(data)
    .enter().append("rect")
      .attr("class", "bar")
      .attr("x", function(d) { return x(d.fphour); })
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.fpprob); })
      .attr("height", function(d) { return height - y(d.fpprob); });

});

function type(d) {
  d.fpprob = +d.fpprob;
  return d;
}

</script>
4
  • Are you getting any error messages? Commented Apr 6, 2015 at 15:00
  • 2
    Ah, d3.json has only two arguments. Remove the type argument. Commented Apr 6, 2015 at 15:53
  • If @LarsKotthoff suggestion does not fix your problem, update your question with an example of your JSON data. Commented Apr 6, 2015 at 16:16
  • Wow, worked. How did I miss that? Thanks a ton Lars! Commented Apr 6, 2015 at 16:20

1 Answer 1

1

Type should not be here .

d3.json("probc.php", ***type***, function(error, data) {

Remove type

d3.json("probc.php",  function(error, data) { 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.