d3 绘制散点图

之前看了angularjs,又看了看d3 on angularjs这本书,本来打算使用angularjs,结果把npm玩坏了,现在都没修好,只好先单独用d3绘制了。

先贴代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>d3</title>
 6     <script src="d3-master/d3.min.js" charset="utf-8"></script>
 7     <link rel="stylesheet" href="css/mycss.css">
 8     <!--script src="js/demo.js" type="javascript"></script-->
 9 </head>
10 <body>
11     <script type="text/javascript">
12         var myData = [
13             [10,20], [100,200]
14         ];
15         var w = 200;
16         var h = 300;
17         d3.select("body").append("svg").attr("width",w).attr("height",h).selectAll("circle").data(myData).enter().append("circle")
18                 .attr("cx",function(d){
19                     return d[0];
20                 })
21                 .attr("cy",function(d){
22                     return d[1];
23                 })
24                 .attr("r",10);
25         window.onload = function(){
26             var add = document.getElementById("add");
27             add.onclick = function(){
28                 var cx = document.getElementById("cx");
29                 var cy = document.getElementById("cy");
30                 var valueCx = parseInt(cx.value);
31                 var valueCy = parseInt(cy.value);
32
33                 myData.push([valueCx,valueCy]);
34                 d3.select("svg").selectAll("circle").data(myData).enter().append("circle")
35                         .attr("cx",function(d){
36                             return d[0];
37                         })
38                         .attr("cy",function(d){
39                             return d[1];
40                         })
41                         .attr("r",10);
42
43             }
44         }
45     </script>
46     <form>
47         <input type="text" name="cx" id="cx"/>
48         <input type="text" name="cy" id="cy"/>
49         <button type="button" id="add">add</button>
50     </form>
51 </body>
52 </html>

之前对jQuery有一些了解,看到代码就知道d3和jQuery的设计模式是差不多的。

d3将tag当成selector,使用.data函数将每一个数据和使用select或者selectAll函数选出的tag绑定起来。

attr函数和jQuery相似,第一个参数是需要改变的样式的名称,第二个参数是需要改变的值。第二个参数可以是一个回调,函数原型有两个参数,第一个是绑定的数组data的其中一个元素,第二个是选出selector的下标。

下面重点提一提enter(),append()函数以及exit(),remove()函数。

在绑定的data数量大于所选的selector数量的时候,enter会创建一些新的空的selector,然后配合append函数使用。

比如说如下代码(来自d3 on angularjs):

d3.select(‘body‘).selectAll(‘.bar‘).data([18,4,7]) .enter().append(‘div‘)
.attr(‘class‘, ‘bar‘)
.style(‘width‘, function(d){ return d + ‘%‘; });
d3.select(‘body‘).selectAll(‘.bar‘).data([18,4,8,11]) .enter().append(‘div‘)
.attr(‘class‘, ‘bar‘)
.style(‘width‘, function(d){ return d + ‘%‘; });

在第二行代码中,绑定的数组变化了,比之前多了1一个元素,有一个元素和前面不一样。但是第二行代码运行之后,第三个div的width仍然是7%,然后与之前相比,增加了一个width为11%的div。

.exit()在所绑定的data数量大于所选的selector数量的时候,会“删除”一些数据,配合remove函数使用。

时间: 2024-10-25 06:30:10

d3 绘制散点图的相关文章

使用D3绘制图表(7)--饼状图

这次是绘制饼状图,也是这一次使用D3绘制图表的最后一篇,大家可以从其他地方深入学习D3绘制图表,也可以直接查看D3的API进行学习,本次绘制饼状图的数据跟之前的卸载数组里面的不一样,这一次是使用d3的csv(url)函数读取的一个data.csv文件,在此声明,如果网页的编辑器不是使用自带的服务器打开网页的那就会读取不了csv文件报错,我这里使用的HBuilder,一款还不错的编辑器. 1.data.csv文件,以键值对的形式书写 education,population 大专及以上,11964

【Python】使用scatter()绘制散点图

绘制简单散点图 要绘制单个点,使用scatter()函数,并向它传递一对x和y坐标,它将在指定位置绘制一个点 import matplotlib.pyplot as plt plt.scatter(2,4) plt.show() 运行结果: 图形美化 下面设置输出样式,使其更有趣:添加标题,给轴加上标签 import matplotlib.pyplot as plt plt.scatter(2,4,s=200) #设置标题并加上轴标签 plt.title("Squares Numbers&quo

2. matplotlib绘制散点图

与绘制直线图的唯一区别:plt.scatter # coding=utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="/System/Library/Fonts/Hiragino Sans GB.ttc") y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15

用seaborn绘制散点图

散点图可以显示观察数据的分布,描述数据的相关性,matlibplot也可以绘制散点图,不过我一般优先使用seaborn库的sctterplot()绘制,下面就介绍一下如何用seaborn.scatterplot()绘制散点图. 1. sctterplot()参数说明 x,y:输入的绘图数据,必须是数值型数据 hue:对输入数据进行分组的序列,使用不同颜色对各组的数据加以区分.下面是一个例子 ar=np.random.randn(20,4) df=pd.DataFrame(a,columns=['

matplotlib库绘制散点图

假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温随时间(天)变化的某种规律? a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,1

D3.js 绘制散点图

对于散点图,使用的数组需要包含坐标元素,即 x, y.同时,散点图需要使用 circle 元素. var svg = d2.select("body") .append("svg") .attr({ width:w, height:h }) svg.selectAll("circle") .data(dataset) .enter() .append("circle") .attr("cx",functio

使用D3绘制图表(3)--添加坐标轴和文本标签

上一篇是曲线的绘制,这样仅仅只是有一条线,完全先是不出数据想要表现的内容,于是我们要添加坐标系,添加坐标系和画线类似. 1.还是没有变化的html页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <link rel="stylesheet" href="css/style.css&q

D3绘制水平柱状图

一.前言 根据需要,Boss让你绘制水平的柱状图,左边显示昨天的数据,今天显示今天的数据.用D3画图 二.仿造数据 today.csv name,value,unit A,2000,% B,1000,t C,1400,¥ D,32,d E,520,d F,10000,d G,5500,元 H,740,t I,850,t J,950,t K,1100,t L,1200,t yesterday.csv name,value,unit A,1000,% B,800,t C,1200,¥ D,30,d

使用D3绘制图表(4)--面积图表

面积图表的绘制就是在曲线图表的基础上做一点小小的改动.其他的代码跟绘制曲线图表没有什么区别,下面有黄色背景颜色的代码就是修改的,是不是很简单,第一句修改的地方就是把之前绘制线的函数(line)改成了绘制面积的函数(area):第二句代码就是加的一行,“.y0(g_height)”这个意思代表的是x轴.“.y1(function(d){return scale_y(d);})”这句和上一句就构成了一个面积,“.style("fill","cornflowerblue"