JSFiddle - React, Tailwind, and code Playground
by Sergey Ivanov
CSS
svg rect.bar {
fill: #510FAD;
}
.axis {
font: 14px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.x.axis path {
display: none;
}
JavaScript
var dataset = [
{
"label" : "01-10-2014",
"data" : 1526
},
{
"label" : "02-10-2014",
"data" : 880
},
{
"label" : "03-10-2014",
"data" : 336.5
},
{
"label" : "04-10-2014",
"data" : 501
},
{
"label" : "05-10-2014",
"data" : 123
},
{
"label" : "06-10-2014",
"data" : 287
},
{
"label" : "07-10-2014",
"data" : 784
},
{
"label" : "08-10-2014",
"data" : 1010
},
{
"label" : "09-10-2014",
"data" : 2599
},
{
"label" : "10-10-2014",
"data" : 470
}
];
/*ширина SVG элемента*/
var svgWidth = 700;
/*высота SVG элемента*/
var svgHeight = 300;
/*отступы графика внутри SVG элемента*/
var chartMargin = {top: 50, right: 30, bottom: 80, left: 60};
/*ширина графика*/
var chartWidth = svgWidth - chartMargin.right - chartMargin.left;
/*высота графика*/
var chartHeight = svgHeight - chartMargin.top - chartMargin.bottom;
/*создаем SVG элемент и указываем ему ширину и высоту*/
var svg = d3.select("body")
.append("svg")
.attr("width", svgWidth)
.attr("height", svgHeight);
/*создаем группу, внутри которой будут располагаться элементы графика*/
var chart = svg.append("g")
.attr("transform", "translate(" + chartMargin.left + "," + chartMargin.top + ")");
/*функция масштабирования значений по оси X*/
var xScale = d3.scale.ordinal()
.rangeRoundBands([0, chartWidth], .2)
.domain(dataset.map(function (d) { return d.label; }));
/*функция масштабирования значений по оси Y*/
var yScale = d3.scale.linear()
.range([chartHeight, 0])
.domain([0, d3.max(dataset, function (d) { return d.data; })]);
/*функция создания горизонтальной оси Х*/
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom");
/*функция создания вертикальной оси Y*/
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left");
/*Добавляем оси...