D3js-對柱狀圖的增,刪,排序

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>D3 添加 刪除 排序 柱狀圖</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
  <script type="text/javascript" src="js/d3/d3.js"></script>
<script type="text/javascript" src="js/d3/d3.min.js"></script>

   <script type="text/javascript">
   
    //定義變量
    var width =1000;
    var height=600;
   
    var dataset=[];
   
    var svg = d3.select("body").append("svg")
    .attr("width".width)
    .attr("height",height);
   
  for(var i=0;i<5;i++)
  {
  dataset[i]=Math.floor(Math.random()*100);
  }
   
  console.log(dataset);
  //外邊框
  var padding={top:20,right:20,bottom:20,left:20};
  //矩形寬度 包含空白
  var rectStep=35;
  //矩形寬度 不包含空白
  var rectWidth=30;  
 
  //繪製矩形
  function draw()
  {
  //1-----------------------------------
  //獲取矩形updata部分
  var updateRect = svg.selectAll("rect")
  .data(dataset);
 
  //獲取矩形的enter部分
  var enterRect =updateRect.enter();
 
  //獲取矩形的exit部分
  var exitRect =updateRect.exit();
 
  //獲取矩形update方法的處理
  updateRect.attr("fill","steelblue")
  //矩形座標
   .attr("x",function(d,i)
   {
    return padding.left+i*rectStep;
   })
   .attr("y",function(d,i)
   {
    return height-padding.bottom-d;
   })
   //矩形的高寬
   .attr("width",rectWidth)
   .attr("height",function(d,i)
   {
    return d;
   });
  //獲取矩形 enter方法的處理
  enterRect.append("rect")
  .attr("fill","steelblue")
  //矩形座標
   .attr("x",function(d,i)
   {
    return padding.left+i*rectStep;
   })
   .attr("y",function(d,i)
   {
    return height-padding.bottom-d;
   })
   //矩形的高寬
   .attr("width",rectWidth)
   .attr("height",function(d,i)
   {
    return d;
   });
   
  //獲取矩形exit方法的處理
  exitRect.remove();
 
  //2--------------------------------------
 
  //獲取文字update的處理
  var updateText = svg.selectAll("text")
  .data(dataset);
 
  var enterText = updateText.enter();
 
  var exitText = updateText.exit();
 
 
  updateText.attr("fill","white")
  .attr("font-size","14px")
  .attr("text-anchor","middle")
  .attr("x",function(d,i)
  {
  return padding.left+i*rectStep;
  })
  .attr("y",function(d,i)
  {
  return height-padding.bottom-d;
  })
  .attr("dx",rectWidth/2)
  .attr("dy","1em")
  .text(function(d,i)
  {
  return d;
  });
  enterText.append("text")
  .attr("fill","white")
  .attr("font-size","14px")
  .attr("text-anchor","middle")
  .attr("x",function(d,i)
  {
  return padding.left+i*rectStep;
  })
  .attr("y",function(d,i)
  {
  return height-padding.bottom-d;
  })
  .attr("dx",rectWidth/2)
  .attr("dy","1em")
  .text(function(d,i)
  {
  return d;
  });
 
  exitText.remove();
  }
 
 
  //調用畫圖函數
  draw();
 
  //排序
  function sortData()
  {
  dataset.sort(d3.ascending);
  draw();
  }
 
  //添加
  function addData()
  {
  dataset.push(Math.floor(Math.random()*100));
  draw();
  }
  //刪除
  function deleteData()
  {
  //選中所有條
  dataset.shift();
  var bars = svg.selectAll("rect")
  .data(dataset);
 
  bars.exit()  
  .remove();
  draw();
  }
   </script>
    
    <br/>
    <div>
<button type="button" onclick="sortData()">排序</button>
<button type="button" onclick="addData()">添加</button>
<button type="button" onclick="deleteData()">刪除</button>

</div>
  </body>

</html>javascript


參考 站點:http://www.ourd3js.com/wordpress/?p=841css

http://blog.csdn.net/tianxuzhang/article/details/14086627
html

相關文章
相關標籤/搜索