JSFiddle - React, Tailwind, and code Playground

by yonet3d

HTML

<body>
    
</body>

CSS

body {
  font: 10px sans-serif;
}

svg {
    width: 300px;
    height: 300px;
}

.axis path,
.axis line {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}

.x.axis path {
  display: none;
}

.line {
  fill: none;
  stroke: steelblue;
  stroke-width: 1.5px;
}

JavaScript

var xScale = d3.time.scale().range([0, 200]); //0 to width
var yScale = d3.scale.linear().range([200, 0]); // height to 0
var parseDate = d3.time.format("%d-%b-%y").parse;

var data = [
    {date: '1-May-12', stat: 48},
    {date: '17-Apr-12', stat: 32},
    {date: '1-Mar-12', stat: 25},
    {date: '1-Feb-12', stat: 43},
    {date: '9-Jan-12', stat: 56}
]

data.forEach(function(d){
	d.date = parseDate(d.date);
})
xScale.domain(d3.extent(data, function(d) { return d.date;}))
yScale.domain(d3.extent(data, function(d) { return d.stat; }))
var line = d3.svg.line()
	.interpolate("basis")
	.x(function(d) {
		return xScale(d.date);
	})
	.y(function(d) {
		return yScale(d.stat);
	});
//x-axis
var xAxis = d3.svg.axis()
    .scale(xScale)
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(yScale)
    .orient("left");

var svg = d3.select("body").append("svg")
    .attr("width", 200)
    .attr("height", 200)
  .append("g")
    .attr("transform", "translate(25,10)");

 svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + 200 + ")")
      .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("Price ($)");

svg.append("path")
      .datum(data)
      .attr("class", "line")
      .attr("d", line);