Integration with d3.js chart
Other charting libraries
by Flexmonster Pivot Table
HTML
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<script src="//d3js.org/d3.v4.min.js"></script>
<div id="pivot-container"></div>
<svg id="d3Chart" width="700" height="400"></svg>
CSS
@import url(https://cdn.flexmonster.com/assets/jsfiddle-styles.css);
.axis--x path {
display: none;
}
.axis--x line {
display: none;
}
.axis--y path {
display: none;
}
.axis--y line {
stroke: #e7e7e7;
}
JavaScript
const pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
licenseFilePath: "https://cdn.flexmonster.com/jsfiddle.charts.key",
height: 350,
toolbar: true,
report: {
dataSource: {
dataSourceType: "csv",
filename: "data/data.csv",
},
slice: {
rows: [
{
uniqueName: "Country",
},
],
columns: [
{
uniqueName: "[Measures]",
},
],
measures: [
{
uniqueName: "Price",
},
],
},
},
reportcomplete: function () {
pivot.off("reportcomplete")
createChart()
},
});
function createChart() {
pivot.getData(
{},
drawChart,
updateChart,
);
}
function prepareDataFunction(rawData) {
let data = [];
for (let i = 0; i < rawData.data.length; i++) {
let record = rawData.data[i];
if (record["r0"] == undefined || record["v0"] == undefined) continue; //taking only facts for this sample
let _record = {
member: record["r0"],
value: !isNaN(record["v0"]) ? record["v0"] : 0,
};
data.push(_record);
}
return data;
}
function drawChart(rawData) {
const svg = d3.select("#d3Chart"),
margin = { top: 40, right: 25, bottom: 120, left: 120 },
width = +svg.attr("width") - margin.left - margin.right,
height = +svg.attr("height") - margin.top - margin.bottom;
const x = d3.scaleBand().range([0, width]).padding(0.4),
y = d3.scaleLinear().range([height, 0]);
const g = svg
.append("g")
.attr("transform", `translate(${margin.left},${margin.top})`);
const data = prepareDataFunction(rawData);
x.domain(data.map((d) => d.member));
y.domain([0, d3.max(data, (d) => d.value) * 1.1]);
g.append("g")
.attr("class", "axis axis--x")
.attr("transform", `translate(0,${height})`)
.call(d3.axisBottom(x))
.selectAll("text")
...