d3实现曲线面积图,柱状图,天气曲线 案例,前端开发培训武汉

24 阅读3分钟

总结

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力! 开源分享:docs.qq.com/doc/DSmRnRG…

top: 20

}

let areaObj = {

color1: 'rgba(255, 191, 0, 0)',

color2: 'rgba(255, 191, 0, 0.4)',

id: 'linearColor1',

top: 30

}

let circleObj = {

fill: 'rgba(255, 191, 0, 1)',

r: 4,

stroke: 'red',

strokewidth: 2

}

let barObj = {

fill: 'rgba(125, 149, 201, 0.3)',

width: 20,

}

let data = [20, 5, -10, 3, 10, 9, 8, 30, 5]

let mywidth = data.length * 100

let onepadding = 100

/**

创建实例, 去使用封装好的方法

**/

let mydrow = new drow('.whiteline', data, mywidth, onepadding, height, lineObj, textObj, areaObj, circleObj, barObj)

mydrow.drowLine() //直接绘制曲线

mydrow.drowarea() //增加面积图

mydrow.drowText() //增加文字

mydrow.circle() //增加圆点

mydrow.bar() //绘制条形图

function drow(el, data, width, padding, height, lineObj, textObj, areaObj, circleobj, barObj) {

this.data = data

this.width = width

this.padding = padding

this.height = height

this.lineObj = lineObj

this.textObj = textObj

this.areaObj = areaObj

this.circleobj = circleobj

this.barObj = barObj

this.el = el

this.lineGen = d3.svg.line()

this.scale = d3.scale.linear()

.domain([Math.min.apply(null, this.data), Math.max.apply(null, this.data)])

.range([(this.height / 2), 0])

this.svg = d3.selectAll(this.el)

.append('svg')

.attr('width', this.width)

.attr('height', this.height)

let self = this

this.drowLine = function() {//绘制曲线

self.lineGen.x(function(d, i) {

let index = i + 1

return index * self.padding - self.padding / 2

})

.y(function(d, i) {

return self.scale(d)

})

.interpolate("cardinal")

self.svg.append('g')

.attr("transform", "translate(0," + self.lineObj.top + ")")

.append('svg:path')

.attr('d', self.lineGen(self.data))

.attr('stroke', self.lineObj.color)

.attr('stroke-width', self.lineObj.width)

.attr('fill', 'none')

}

this.drowText = function() {//绘制文字

self.svg.selectAll("text")

.data(self.data)

.enter()

.append('text')

.text(function(d, i) {

return d

})

.attr('x', function(d, i) {

let index = i + 1

return index * self.padding - self.padding / 2

})

.attr('y', function(d, i) {

return self.scale(d)

})

.attr("text-anchor", self.textObj.textanchor)

.attr("fill", self.textObj.fill)

.attr('font-size', self.textObj.size)

.attr("transform", "translate(0," + self.textObj.top + ")")

}

this.drowarea = function() {//绘制面积

let defs = self.svg.append("defs");

let linearGradient = defs.append("linearGradient")

.attr("id", self.areaObj.id)

.attr("x1", "0%")

.attr("y1", "100%")

.attr("x2", "0%")

.attr("y2", "0%");

let stop1 = linearGradient.append("stop")

.attr("offset", "0%")

.style("stop-color", self.areaObj.color1);

let stop2 = linearGradient.append("stop")

.attr("offset", "100%")

.style("stop-color", self.areaObj.color2);

let area_generator = d3.svg.area() //d3中绘制面积的函数

.x(function(d, i) {

let index = i + 1

return index * self.padding - self.padding / 2

}) //曲线中x的值

.y0(this.padding) //相当于x坐标

.y1(function(d, i) {

return self.scale(d)

}) //曲线中y的值

.interpolate("cardinal") //把曲线设置光滑

self.svg.append("g")

.attr("transform", "translate(0," + self.areaObj.top + ")")

.append("path")

.attr("d", area_generator(this.data))

.style("fill", "cornflowerblue")

.style("fill", "url(#" + linearGradient.attr("id") + ")")

}

this.circle = function() {//绘制圆点

self.svg.selectAll("circle")

.data(data)

.enter()

.append('circle')

.attr('cx', function(d, i) {

let index = i + 1

return index * padding - padding / 2

计算机网络

  • HTTP 缓存

  • 你知道 302 状态码是什么嘛?你平时浏览网页的过程中遇到过哪些 302 的场景?

  • HTTP 常用的请求方式,区别和用途?

  • HTTPS 是什么?具体流程

  • 三次握手和四次挥手

  • 你对 TCP 滑动窗口有了解嘛?

  • WebSocket与Ajax的区别

  • 了解 WebSocket 嘛?

  • HTTP 如何实现长连接?在什么时候会超时?

  • TCP 如何保证有效传输及拥塞控制原理。

  • TCP 协议怎么保证可靠的,UDP 为什么不可靠?

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

算法

  • 链表

  • 字符串

  • 数组问题

  • 二叉树

  • 排序算法

  • 二分查找

  • 动态规划

  • BFS

  • DFS

  • 回溯算法