面积生成器

面积生成器--d3.area(),返回的函数用于生成不封闭的曲线路径字符串(path标签的d属性值)。它有两种,一种为随着x轴的伸展而变化(需要定义x,y0,y1访问器),另一种为随着y轴的伸展而变化(需要定义x0,x1,y访问器)。拿第一种来说,x可以理解为x轴的取值,y0可以理解为图形是基于那条线的,即:基线,y1可以理解为图形的另一条线,即:顶线。其实,整个面积图形是被包裹在y=y0和y=y1两条线之间的。注意,这两条线也可以是曲线。而第二条也就是整个面积图形是被包裹在x=x0和x=x1两条线之间的。

数据格式

数据值应包括自增的x或y,及基线和顶线。如,第一种情况下我们让基线固定,顶线变化便可以用如下的数据格式

  1. var data = [
  2. {x: 100, y: 100}, {x: 150, y: 150}, {x: 200, y: 100},
  3. {x: 250, y: 150}, {x: 300, y: 100}, {x: 350, y: 150}
  4. ];

有时候也需要让基线不是固定的:

  1. var data = [
  2. {x: 100, y1: 100, y0: 150}, {x: 150, y1: 150, y0: 200}, {x: 200, y1: 100, y0: 150},
  3. {x: 250, y1: 150, y0: 200}, {x: 300, y1: 100, y0: 150}, {x: 350, y1: 150, y0: 200}
  4. ];

构造器

第一种形式的构造器,第二种形式一样,只是访问器函数不一样。

  1. var area = d3.area()
  2. .x(function (d) {return d.x;})
  3. .y0(function (d) {return d.y0;})
  4. .y1(function(d){return d.y1;});

同样我们还可以使用curve使得边线有各种变形。

例子请移步这里

时间: 2024-12-28 16:21:01

面积生成器的相关文章

径向面积生成器

径向面积生成器→d3.radialArea,它构造出的函数用于生成径向面积的路径字符串(path标签的d属性值). 数据格式 和径向线的数据结构类似,只是将其半径分为内半径和外半径两个,如下所示: var data = [ {innerRadius:50, outerRadius:100, angle:0}, {innerRadius:50, outerRadius:100, angle:per}, {innerRadius:50, outerRadius:100, angle:2*per},

【D3 API 中文手册】提交记录

[D3 API 中文手册]提交记录 声明:本文仅供学习所用,未经作者允许严禁转载和演绎 <D3 API 中文手册>是D3官方API文档的中文翻译.始于2014-3-23日,基于VisualCrew小组的六次协作任务之上,目前已经大致翻译完毕,将陆续向官网提交D3 API 中文版. 本文主要内容有: 列举初版翻译/校对人员列表 记录中文翻译的官网提交情况 提供校对联系方式 提供D3 API简版翻译 翻译/校对人员列表 翻译人员列表 API项目 文档页数 单词数 翻译 校对 core.select

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青

装饰器、生成器、迭代器

装饰器的前奏 装饰器:本质是函数 功能:就是装饰成其他函数  就是为其他函数添加附加功能的 高阶函数+嵌套函数=装饰器 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 总结一句话:装饰器对被装饰的函数是完全透明的 实现装饰器的只是储备: 1.函数名即"变量"   将函数体赋值给变量   和内存回收机制一样 2.高阶函数 2.1.把函数名作为实参传递给形参(可返回被修饰函数的地址)(不修改源代码的情况可添加新的功能) 2.2返回值中包含函数地址(不修改函数的调

Python面试题之生成器/迭代器

1.为什么要有生成器? 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以... 在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 第一种方法很简单,只

要求用户输入宽和高,显示出长方形的面积。

import java.util.Scanner; /** * @author 蓝色以太 * 要求用户输入宽和高,显示出长方形的面积. */ public class Area { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入长度:"); double length=sc.nextDouble(); System.out.printl

4.利用python生成器实现简单的“生产者消费者”模型

假如说,没有生成器这种对象,那么如何实现这种简单的"生产者消费者"模型呢? import time def producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.append("包子%s" %i) return pro_list def consumer(pro_list): for index,stuffe

Python之路22-列表生成式和函数生成器

#列表生成式 list1 = [i*2 for i in range(1,11)] #生成器,在调用时才会生成相应的数据 list = (x*2 for x in range(1,1000000)) #list.__next__() #函数生成器 def fib(max):     n,a,b = 0,0,1     while n < max:         #print (b)         yield b         a,b = b,a+b         n = n + 1   

输入一个半径求圆的面积和周长

Scanner sc = new Scanner(System.in); System.out.print("请输入半径"); int r =sc.nextInt(); final double π = 3.14; System.out.print("面积为:"+(π*r*r)); System.out.print("周长为:"+(π*r*2));