<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--<link rel="stylesheet" href="css/style.css" />-->
<style>
#container {
width: 500px;
height: 250px;
background-color: #ccc;
margin: 0 auto;
margin-top: 100px;
}
path {
fill: none;
stroke: cornflowerblue;
stroke-width: 2px;
}
.domain,
.tick line {
stroke: gray;
stroke-width: 1px;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="./d3.js" charset="utf-8"></script>
<script>
var width = 500,
height = 250,
margin = {
left: 50,
top: 30,
right: 20,
bottom: 20
},
g_width = width - margin.left - margin.right,
g_height = height - margin.top - margin.bottom;
//获取div,向里面添加svg
var svg = d3.select("#container")
.append("svg:svg") //在“container”中插入svg
.attr("width", width) //设置svg的宽度
.attr("height", height) //设置svg的高度
//添加g元素
var g = d3.select("svg")
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
var data = [0, 1, 3, 5, 9, 4, 2, 3, 6, 8] //定义一个数组,里面放置了一些任意数字
var scale_x = d3.scaleLinear() //把曲线沿x轴按比例放大
.domain([0, data.length - 1])
.range([0, g_width])
var scale_y = d3.scaleLinear() //把曲线沿y轴按比例放大
.domain([0, d3.max(data)])
.range([200, 0]) //使y轴按照数学中的方式显示,而不是浏览器的格式
var line_generator = d3.line() //d3中绘制曲线的函数
.x(function(d, i) {
return scale_x(i);
}) //曲线中x的值
.y(function(d) {
return scale_y(d);
}) //曲线中y的值
.curve(d3.curveCardinal)
// .interpolate("curveCardinal") //把曲线设置光滑
d3.select("g")
.append("path")
.attr("d", line_generator(data))
var x_axis = d3.axisBottom(scale_x),
y_axis = d3.axisLeft().scale(scale_y)
g.append("g")
.call(x_axis)
.attr("transform", "translate(0," + g_height + ")")
g.append("g")
.call(y_axis)
.append("text")
.text("price(¥)")
.attr("transform", "rotate(-90)") //text旋转-90°
.attr("text-anchor", "end") //字体尾部对齐
.attr("dy", "1em") //沿y轴平移一个字体的大小
var g = svg.selectAll('circle')
.data(data)
.enter()
.append('g')
.append('circle')
.attr('class', 'linecircle')
.attr('cx', (d,i) => scale_x(i)+50)
.attr('cy', d => scale_y(d)+30)
.attr('r', 3.5)
.on('mouseover', function() {
d3.select(this).transition().duration(500).attr('r', 5);
})
.on('mouseout', function() {
d3.select(this).transition().duration(500).attr('r', 3.5);
});
</script>
</html>
是不是这个样子
