Edit in JSFiddle

var w = 300;
var h = 300;
var r = h / 2;
var color = d3.scale.ordinal()
  .domain(["awesome", "good", "meh", "bad", "terrible"])
  .range(['lime', 'greenyellow', 'lightsteelblue', 'steelblue', 'blueviolet']);

d3.json("https://jm26tdr6a6.execute-api.us-west-2.amazonaws.com/test/mood-bot/", function(error, jsonData) {
  root = jsonData.moods;
  update(root);
});

function update(moods) {

  var data = Object.keys(moods)
    .map(function(key) {
      return {
        label: key,
        value: moods[key]
      };
    })

  var vis = d3
    .select('#chart')
    .append("svg:svg")
    .data([data])
    .attr("width", w)
    .attr("height", h)
    .append("svg:g")
    .attr("transform", "translate(" + r + "," + r + ")");

  var pie = d3
    .layout
    .pie()
    .value(function(d) {
      return d.value;
    });

  // declare an arc generator function
  var arc = d3.svg.arc().outerRadius(r);

  // select paths, use arc generator to draw
  var arcs = vis
    .selectAll("g.slice")
    .data(pie)
    .enter()
    .append("svg:g")
    .attr("class", "slice");

  arcs.append("svg:path")
    .attr("fill", function(d) {
      return color(d.data.label);
    })
    .attr("d", function(d) {
      return arc(d);
    });

  arcs.append("svg:text")
    .attr("transform", function(d) {
      d.innerRadius = 0;
      d.outerRadius = r;
      return "translate(" + arc.centroid(d) + ")";
    })
    .attr("text-anchor", "middle")
    .text(function(d, i) {
      return data[i].label + " [" + data[i].value + "]";
    });
}
text {
  text-transform: capitalize;
}

body {
  background: black;
  font-family: helvetica;
}
<div id="chart"></div>