Home > Web Front-end > JS Tutorial > Introduction to the code for creating a complete column chart using d3.js

Introduction to the code for creating a complete column chart using d3.js

不言
Release: 2019-04-04 16:47:30
forward
3409 people have browsed it

This article brings you an introduction to the code for creating a complete column chart using d3.js. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

d3js.org v5.9.2

Before, it was just a demo of each part. Now I have integrated all the parts and found that I have learned a lot

Mainly to deepen my understanding of Understanding scale

Code

Style and data

First the style

<style>
    rect {
        fill: pink
    }
    text {
        font-size: 10px;
    }
</style>
Copy after login

Then the data and histogram width and height

const
    data = [3, 6, 10, 25],
    barWidth = 100,
    barHeight = 300,
    padding = { //svg留白用
        top: 100,
        right: 100,
        bottom: 100,
        left: 100
    };
Copy after login

Create the scale

After practice, my understanding of the scale and the coordinate axis has deepened a little

let barScale = d3.scaleLinear().domain([0, d3.max(data)]).range([0, barHeight]),
    yAxisScale = d3.scaleLinear().domain([d3.max(data), 0]).range([0, barHeight]),//y轴使用线性比例尺,注意domain输入域
    xAxisScale = d3.scaleBand().domain([1, 2, 3, 4]).range([0, (barWidth - 1) * data.length]); //x轴使用scaleBand比例尺
Copy after login

barScale is used to create the column chart
yAxisScale is used to create the y-axis, pay attention to domain() input field, otherwise the scale value arrangement will be reversed
xAxisScale is used to create the x-axis, use scaleBand ordinal scale
My previous understanding of the scale was too superficial, and I also did a few small experiments here

console.log(`barScale(0):` + barScale(0));
console.log(`yAxisScale(0):` + yAxisScale(0));
console.log(`xAxisScale(2):` + xAxisScale(2));
Copy after login

Displayed as follows

Introduction to the code for creating a complete column chart using d3.js

For barScale and yAxisScale, the input domain is opposite, so the mapping is opposite, and the article is great The summary is at the end of the article

Creating a histogram

let barContainer = d3.select('.chart')
    .attr('width', data.length * barWidth + padding.left + padding.right)
    .attr('height', barHeight + padding.top + padding.bottom)
    .selectAll('g')
    .data(data).enter().append('g')
    .attr('transform', (d, i) => {
        return 'translate(' + (padding.left + i * barWidth) + ',' + (padding.top + barHeight - barScale(d)) + ')'
    });
barContainer.append('rect')
    .attr('height', d => barScale(d))
    .attr('width', barWidth - 1);
barContainer
    .append('text')
    .text(d => d)
    .attr('y', 10)
    .attr('x', barWidth / 2 - 5);
Copy after login

The value of the previously defined padding object is used to leave part of the blank

Creating the coordinate axis

/**
 * 创造y轴
 */
let yAxis = d3.axisLeft(yAxisScale);
d3.select('.chart')
    .append('g')
    .attr('transform', 'translate(' + (padding.left - 10) + ',' + padding.top + ') ')
    .call(yAxis);
/**
 * 创建X轴
 */
let xAxis = d3.axisBottom(xAxisScale);
d3.select('.chart')
    .append('g')
    .attr('transform', 'translate(' + (padding.left) + ',' + (padding.top + barHeight) + ')')
    .call(xAxis);
Copy after login

Finally create the coordinate axis

Introduction to the code for creating a complete column chart using d3.js

[Related recommendations: JavaScript video tutorial]

The above is the detailed content of Introduction to the code for creating a complete column chart using d3.js. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template