先来看看效果图
下面直接上源代码, html 文件
<html> <head> <meta charset = "utf-8"> <title> </title> <style> .axis path, .axis line {fill : none; 뇌졸중 : 검은 색; 모양 렌더링 : 바삭한; } .axis text {font-family : sans-serif; 글꼴 크기 : 11px; } .Overlay {fill : 없음; 포인터 이벤트 : 모두; } .Tooltip {너비 : 150px; 높이 : 자동; 위치 : 절대; 유대 가족 : 심천; 글꼴 크기 : 16px; 라인 높이 : 26px; 텍스트 정렬 : 왼쪽; 국경 : 1px 솔리드 블랙; 배경색 : 흰색; Border-Radius : 5px; } .ToolTip .Title {Border-Bottom : 1px Solid #000; 텍스트 정렬 : 센터; } .tooltip .descolor {너비 : 10px; 높이 : 10px; 플로트 : 왼쪽; 여백 : 9px 8px 1px 8px; } .tooltip .destext {디스플레이 : 인라인; } .focusline {스트로크 : 검은 색; 뇌졸중 범위 : 1px; 뇌졸중-다셔 : 5,5; } </style> </head> <body> <script src = "http://d3js.org/d3.v3.js"charset = "utf-8"> </script> <script src = "linechart.js"charset = "utf-8"> </script> <svmascenttype = "text/ecmmas" xmlns : xlink = "http://www.w3.org/1999/xlink"zoomandpan = "magnify"style = "Background-Color : #ffffff;" ContentStyletype = "text/css"viewbox = "0 0 2000.0 2000.0"preserveaspectratio = "xmidymid meet"xmlns = "http://www.w3.org/2000/svg"버전 = "1.0"> <sevential id = "fillguuge1"Viewbox = "0 500.0 300.0" Preserveaspectratio = "none meet"> </symbol> <symbol id = "fillgauge2"viewbox = "0 0 200.0 200.0"preserveaspectratio = "none meet"> </symbol> </defs> <a use x = "0"y = "0"xmlns : xlink = "http://www.w.w.w.org/199/199/199/xlink. xlink : href = "#fillgauge1"xlink : type = "simple"xlink : actuate = "onload"severailtype = "17"xlink : show = "embed"/> <use x = "20"y = "20"xmlns : xlink = "http://www.w3.org/1999/xlink. xlink : href = "#fillgauge2"xlink : type = "simple"xlink : actuate = "onload"severailtype = "17"xlink : show = "embed"/> </svg> <cript> var dataset = [{country : "China", GDP : [[2000,11920], [2001,1170], 13170] [2003,16500], [2004,19440], [2005,22870], [2006,27930], [2007,35040], [2008,45470], [2009,51050], [2010,59490], [2011,73140], [2012,83860], [2013,103550]) "미국", GDP : [[2000,47310], [2001,41590], [2002,39800], [2003,43020], [2004,46550], [2005,45710], [2006,43560], [2007,43560], [208,48490], [2009,50350], [2010,54950], [2011,59050], [2012,59370], [2013,48980]]}]; var Guege1 = LoadlineChart ( "FillGauge1", DataSet); 함수 newValue () {if (math.random ()> .5) {return math.round (math.random ()*100); } else {return (math.random ()*100) .tofixed (1); }} function refreshline (geage1) {// alert ( "hehe"); // document.getElementById ( "fillGauge1"). innerHtml = ""; var updatedata = [{Country : "China", GDP : [2000, NewValue ()], [2001, NewValue ()], [2002, NewValue ()], [2003, NewValue ()], [2004, NewValue ()], [2005, NewValue ()], [2006, NewValue ()], [2007, NewValue ()], [2008, NewValue ()], [2009, NewValue ()], [2010, NewValue ()], [2011, NewValue ()], [2012, NewValue ()], [2013, NewValue ()]}, {Country : ", GDP": [[2000, NewValue ()], [2001, NewValue ()], [2002, NewValue ()], [2003, NewValue ()], [2004, NewValue ()], [2005, NewValue ()], [2006, NewValue ()], [2007, NewValue ()], [2008, NewValue ()], [2009, NewValue ()], [2010, NewValue ()], [2011, NewValue ()], [2012, NewValue ()], [2013, NewValue ()]}]; 게이지 1.update (updatedata); } self.setInterVal ( "Compertline (Gauge1)", 5000); </script> </body> </html>Linechart.js.
함수 loadlinechart (elementid, dataset) {var svg = d3.select ( "#" + elementId); var strs = svg.attr ( "viewbox"). split ( ""); 경고 (데이터 세트); var width = strs [2]; var 높이 = strs [3]; // var var padding = {상단 : 50, 오른쪽 : 50, 하단 : 50, 왼쪽 : 50}; var names = new array (); // gdp 的最大值 var gdpmax = 0; for (var i = 0; i <dataset.length; i ++) {var currgdp = d3.max (dataset [i] .gdp, function (d) {return d [1];}); if (currgdp> gdpmax) gdpmax = currgdp; } var gdpnumb = dataset [0] .gdp.length; for (var j = 0; } alert (이름); var xscale = d3.scale.linear () .Domain ([2000, 2013]) .regange ([0, width -padding.left -padding.right]); // var xScale = d3.scale.ordinal () // .Domain (names) // .rangeroundBands ([0, width -padding.left -padding.right]); var yscale = d3.scale.linear () .domain ([0, gdpmax * 1.1]) .regange ([[높이 -Padding.top -Padding.bottom, 0]); // 创建一个直线生成器 var linepath = d3.svg.line () .x (function (d) {return xscale (d [0]);}) .y (function (d) {return yscale (d [1]);}) .interpolate ( "basis"); // 定义两个颜色 var colors = [d3.rgb (0, 0, 255), d3.rgb (0, 255, 0)]; // 添加路径 svg.selectall ( "path") // <svg> 中所有的 <path> .data (dataSet) // 绑定数据 .Enter () // 选择 inter 部分 .append ( "path") // 添加足够数量的 <path> .attr ( "transform", "translate (" + padding.left + ",") {return linepath (d.gdp); attr ( "fill", "none") .attr ( "stroke-width", 3) .attr ( "stroke", function (d, i) {return colors [i];}); // 添加垂直于 x 添加垂直于 var vline = svg.append ( "line") .attr ( "class", "focusline") .style ( "display", "none"); // var var 툴팁 = d3.select ( "body") .append ( "div") .attr ( "class", "툴팁") .style ( "불투명도", 0.0); var title = tooltip.append ( "div") .attr ( "class", "title"); var des = tooltip.selectall ( ". des") .data (dataset) .enter () .append ( "div"); var descolor = des.append ( "div") .attr ( "class", "descolor"); var destext = des.append ( "div") .attr ( "class", "destext"); // 添加一个透明的监视鼠标事件用的矩形 svg.append ( "rect") .attr ( "class", "Overlay") .attr ( "x", padding.left) .attr ( "y", padding.top) .attr ( "width", width -padding.left -padding.right) .attr ( "높이 -Padding.top- Padding.bottom (") ( ") ToolTip.Style ( "왼쪽", (d3.event.pagex) + "px") .Style ( "top", (d3.event.pagey + 20) .Style ( "불투명도", vline.style ( "display", "milousout () {worlite"; vline.style ( "display", "none"). 함수 mouseMove () { / * 当鼠标在透明矩形内滑动时调用 * // 折线的源数组 var data 세트 [0] .gdp; // 获取鼠标相对于透明矩形左上角的坐标, 获取鼠标相对于透明矩形左上角的坐标 (0,0) var mousex = d3.mouse (this) [0] -Padding.left; var mousey = d3.mouse (this) [1] -Padding.top; // 通过比例尺的反函数计算原数据中的值 通过比例尺的反函数计算原数据中的值, 通过比例尺的反函数计算原数据中的值 x0 为某个年份, y0 为 gdp 值 var x0 = xscale.invert (mousex); var y0 = yscale.invert (mousey); // 对 x0 对, 如果 x0 是 2005.6, 则返回 2006 ;如果是 2005.2, 则返回 2005 x0 = math.round (x0); // 查找在原数组中 x0 查找在原数组中 查找在原数组中, 并返回索引号 var bisect = d3.bisector (function (d) {return d [0];}). 왼쪽; var index = bisect (data, x0); // 获取年份和 gdp 数据 var year = x0; var gdp = []; for (var k = 0; k <dataset.length; k ++) {gdp [k] = {country : dataset [k] .Country, value : dataset [k] .gdp [index] [1]}; } // 设置提示框的标题文字 ay (年份) Title.html ( "<strong>" + year + "年 </strong>"); // 设置颜色标记的颜色 descolor.style ( "배경색", 함수 (d, i) {return colors [i];}); // 设置描述文字的内容 destext.html (function (d, i) {return gdp [i] .country + "/t" + "<strong>" + gdp [i] .Value + "</strong>";}); // 设置提示框的位置 툴프 팁. 스타일 ( "왼쪽", (d3.event.pagex) + "px") .style ( "top", (d3.event.pagey + 20) + "px"); // 获取垂直对齐线的 x 获取垂直对齐线的 var vlx = xScale (data [index] [0]) + padding.left; // vline.attr ( "x1", vlx) .attr ( "y1", padding.top) .attr ( "x2", vlx) .attr ( "y2", height -padding.bottom); } var Markstep = 80; var gmark = svg.selectall ( ". gmark") .data (dataset) .enter () .append ( "g") .attr ( "transform", function (d, i) {return "translate (" + (padding.left + i * Markstep) + "," + (높이 -Padding.bottom + 40) + "); gmark.append ( "rect") .attr ( "x", 0) .attr ( "y", 0) .attr ( "width", 10) .attr ( "height", 10) .attr ( "fill", function (d, i) {return colors [i];}); gmark.append ( "text") .attr ( "dx", 15) .attr ( "dy", ".5em") .attr ( "fill", "black") .text (function (d) {return d.country;}); // x x var xaxis = d3.svg.axis () .Scale (xscale) .ticks (5) .tickformat (d3.format ( "d")) .orient ( "bottom"); // y y var yaxis = d3.svg.axis () .Scale (yscale) .orient ( "왼쪽"); svg.append ( "g") .attr ( "class", "axis") .attr ( "transform", "translate (" + padding.left + "," + (높이 -Padding.bottom) + ") .call (xaxis); svg.append ( "g") .attr ( "class", "y axis") .attr ( "transform", "translate (" + padding.left + "," + padding.top + ") .call (yaxis); 함수 uddatelinechart () {this.update = function (updatedata) {//xscale.domain(updatedata, function(d) {Return d.name}); var numvalues = updatedata.length; var updateDpmax = 0; for (var i = 0; i <updatedata.length; i ++) {var currgdp = d3.max (updateatata [i] .gdp, function (d) {return d [1];}); if (currgdp> updatedpmax) updatedpmax = currgdp; } yscale = d3.scale.linear () .domain ([0, updatedpmax * 1.1]) .range ([[height -padding.top -padding.bottom, 0]); yaxis = d3.svg.axis () .Scale (yscale) .orient ( "왼쪽"); svg.selectall ( "gyaxis") .call (yaxis); svg.selectall ( "path") // <svg> <svg> <data (updateatata) // 绑定数据 绑定数据 绑定数据 绑定数据 绑定数据 绑定数据 ransition () .duration (2000) .ease ( "linear") .attr ( "d", {return linepath (d.gdp); // 返回直线生成器得到的路径}); }} 새로운 updatelinechart ();} 반환刚开始数据刷新了但是坐标轴木有刷新
引入
svg.selectall ( "gyaxis") .call (yaxis);
D3.js 3. 3., 希望给大家学习 d3.js 带来帮助。