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

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

  1.js代码

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.scale.linear()//把曲线沿x轴按比例放大
.domain([0, data.length-1])
.range([0, g_width])
var scale_y = d3.scale.linear()//把曲线沿y轴按比例放大
.domain([0, d3.max(data)])
.range([g_height,0])//使y轴按照数学中的方式显示,而不是浏览器的格式

var area_generator = d3.svg.area()//d3中绘制面积的函数
.x(function(d, i){return scale_x(i);})//曲线中x的值
.y0(g_height)//相当于x坐标
.y1(function(d){return scale_y(d);})//曲线中y的值
.interpolate("cardinal")//把曲线设置光滑

d3.select("g")
.append("path")
.attr("d", area_generator(data))
.style("fill","cornflowerblue")

var x_axis = d3.svg.axis().scale(scale_x),
y_axis = d3.svg.axis().scale(scale_y).orient("left")

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轴平移一个字体的大小

  2.效果图

时间: 2024-11-07 11:12:16

使用D3绘制图表(4)--面积图表的相关文章

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

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

d3.js ----面积图表

d3设置坐标轴样式,将线性图标的下段代码中的line改为area var area_generator = d3.svg.area() .x(function(d, i) { return scale_x(i); }) //x坐标点的值为data数组的下标,参数d表示传进来的数据,i表示下标 .y0(g_height) //y0表示y轴 .y1(function(d) { return scale_y(d) }) //y1表示实际曲线上的值 .interpolate("cardinal"

13个JavaScript图表(JS图表)图形绘制插件【转】

现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容易就可以找到很多功能非常不错的图表库.个人而言,此类插件的上升,是因为: 1. Flash 过去是最佳解决方案,但很多人多在从那迁移: 2. 现代浏览器及其更强大的计算能力,使其在转化绘制实时数据方面的能力更佳: 3. 绘制矢量图的不同技术愈发成熟:VML.SVG 和 Canvas. 当然了,你需要

[5.1] D3.js中整合坐标轴 - 图表 - 文字标签

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 前面几节讲解了图标.坐标轴.比例等等,这一节整合这些内容做一个实用的图表.结果图如下: 代码如下所示: <html> <head> <meta charset="utf-8"> <title>Chart</title> </head> <style> .axis pat

13个JavaScript图表(JS图表)图形绘制插件

现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容易就可以找到很多功能非常不错的图表库.个人而言,此类插件的上升,是因为: 1. Flash 过去是最佳解决方案,但很多人多在从那迁移: 2. 现代浏览器及其更强大的计算能力,使其在转化绘制实时数据方面的能力更佳: 3. 绘制矢量图的不同技术愈发成熟:VML.SVG 和 Canvas. 当然了,你需要

[6] D3.js中如何让图表动起来

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. [5.1]节中制作了一个比较完善的图表,但它是静态的,想做出它的动态效果吗?在D3中只需要短短的几行代码即可. 这一节将涉及4个函数的使用. 1.transition() 启动转变效果只需要添加这个即可.把它加到两种状态之间,例如: .attr("fill","red") .transition() .attr("fill

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=&q

Highmaps网页图表教程之图表配置项结构与商业授权

Highmaps网页图表教程之图表配置项结构与商业授权 Highmaps图表配置项结构 Highmaps最核心的部分就是图表配置项.用户通过图表配置项来对标题进行定制,从而实现自己所要的效果.所以,掌握图表配置项结构是非常重要.本节将大致讲解结构框架,便于读者后续深入. Highmaps基本结构 了解结构的最直接方式,就是看官网API.官方API详细列出了公开的配置项信息.查看官网API有两种方式: q  第一种是直接访问官网提供的API,网址为http://api.highcharts.com

MVC使用Dotnet.HighCharts做图表01,区域图表

如果想在MVC中使用图表显示的话,DotNet.HighCharts是不错的选择.DotNet.HighCharts是一个开源的JavaScript图表库,支持线型图表.柱状图标.饼状图标等几十种图标.本篇实现一个简单的区域图表. 在NuGet中输入关键字"DotNet.HighCharts". 安装完后,在Scripts和程序集下多了HighCharts相关文件. HomeController中. using System.Collections.Generic; using Sys