d3设置line长度_使用d3画一些基本的图形
生成图标需要有四个步骤
1生成图片容器
2设置比例尺
3生成数据图表
4生成坐标系
在展示图表时一般要有个容器,我们可以使用.container 类,同时制定宽高。如下:
可以加个样式
#container{
width:600px;
height:400px;
background:#ccc;
}
引入d3.min.js文件
var width=600,height=400 //设置svg的宽和高
var margin={top:30,right:30,bottom:30,left:30}//设置图表距离svg元素的距离
var g_width= width - margin.left-margin.right //g元素(图表的宽度)
var g_height= height - margin.top - margin.bottom //g 元素的高
//设置svg元素用来放在整个图表
var svg = d3.select("#container").
.append("svg")
.attr({
width:width,
height:height
})
//设置一个g元素用来放置整个图表,并设置位移(设置这个的目的为了能让坐标系显示出来),g元素是不能有宽高属性的,里面的子元素什么样子,g元素就是什么样子。
var g = svg.append("g")
.attr("transform","translate("+margin.left+","+margin.top+")")
//以上代码都是公用的,下面就以几个图表为例讲解
折线图
//要展示的数据(学生6次的数学成绩)
var dataset=[
{
month:'1月',
j:60
},
{
month:'2月',
j:70
},
{
month:'3月',
j:73
},
{
month:'4月',
j:54
},
{
month:'5月',
j:69
},
{
month:'6月',
j:74
}
]
//设置x轴比例尺(序数比例尺)
var scaleX=d3.scaleBand()
.domain(dataset.map((item)=>{
return item.month
})).rangeRound([0,g_width])
//设置y轴比例尺(线性比例尺)
var scaleY=d3.scaleLinear()
.domain([0,100])
.range([g_height,0])
//路径生成器(画图)
var line_gen=d3.line()
.x(function(data,index){
return scaleX(data.month)+scaleX.bandwidth()/2
}).y(function(data,index){
return scaleY(data.j)
})
g.append("path").attr("d",line_gen(dataset))
//生成坐标轴
var axisX=d3.axisBottom().scale(scaleX);
var axisY=d3.axisLeft().scale(scaleY);
g.append("g").call(axisX).attr("transform","translate(0,"+g_height+")")
g.append("g").call(axisY)
柱状图
//柱状图的宽度
var bar_width=50
//设置x轴比例尺(序数比例尺)
var scaleX=d3.scaleBand()
.domain(dataset.map((item)=>{
return item.month
})).rangeRound([0,g_width])
//设置y轴比例尺(线性比例尺)
var scaleY=d3.scaleLinear()
.domain([0,100])
.range([g_height,0])
//生成柱状图
//设置每个柱状图的画的位置
var bar_g=g.selectAll("g")
.data(dataset)
.enter()
.append("g")
.attr("transform",function(data,index){
let bandwidth=scaleX.bandwidth()
let x=index*bandwidth+bandwidth/2-bar_width/2
let y=scaleY(data.j)
return 'translate('+x+','+y+')'
})
//画对应的柱状图
bar_g.append("rect")
.attr("width",bar_width)
.attr("height",function(data){
return scaleY(100-data.j)
}).attr("fill","blue")
bar_g.append("text").text(function(data){
return data.j
}).attr("x",function(data){
return bar_width/2
})
//生成坐标轴
var axisX=d3.axisBottom().scale(scaleX);
var axisY=d3.axisLeft().scale(scaleY);
g.append("g").call(axisX).attr("transform","translate(0,"+g_height+")")
g.append("g").call(axisY)
面积图
var scaleX=d3.scaleBand()
.domain(dataset.map((item)=>{
return item.month
})).rangeRound([0,g_width])
//设置y轴比例尺(线性比例尺)
var scaleY=d3.scaleLinear()
.domain([0,100])
.range([g_height,0])
//区域生成器
var area_gen=d3.area()
.x(function(data,i){
return scaleX(data.month)
}).y(function(data){
return scaleY(data.j)
})
.y0(g_height)
.y1(function(data){
return scaleY(data.j)
})
g.append("path").attr("d",area_gen(dataset))
.style("fill","blue")
//生成坐标轴
var axisX=d3.axisBottom().scale(scaleX);
var axisY=d3.axisLeft().scale(scaleY);
g.append("g").call(axisX).attr("transform","translate(0,"+g_height+")")
g.append("g").call(axisY)
饼状图
//圆弧生成器
let arc=d3.arc()
.innerRadius(100)
.outerRadius(200)
//饼状角度生成器
var angle=d3.pie().value(function(d){ return d.j})
//颜色生成器
var color=d3.schemeCategory10
//生成饼状图
g.selectAll("path")
.data(angle(data))
.enter()
.append("path")
.attr("d",arc).attr("fill",function(data,i){
return color[i]
})
//添加文字
g.selectAll("text")
.data(angle(data))
.enter()
.append("text")
.text(function(item){
return item.data
}).attr("transform",function(d){
return "translate("+arc.centroid(d)+")"
})
d3设置line长度_使用d3画一些基本的图形相关推荐
- d3设置line长度_万物皆可Embedding之LINE算法解读
需要论文的朋友可以后台私信我获取 前言 上一篇文章给大家带来了Graph Embedding技术中的代表算法Deepwalk,今天给大家介绍graph embedding又一代表算法--LINE,LI ...
- d3设置line长度_1.7 SVG/D3中字体特殊设置
#### 1.添加上下标 SVG或D3中,有时需要实现如下的效果:10^23,或需要下标,使用`baseline-shift`属性即可实现. `baseline-shift`属性有两个值: * sub ...
- d3设置line长度_Graph Embedding之LINE算法解读
需要论文的朋友可以后台私信我获取 前言 上一篇文章给大家带来了Graph Embedding技术中的代表算法Deepwalk,今天给大家介绍graph embedding又一代表算法--LINE,LI ...
- 设置固定长度_厂房及仓库常规消防系统设置!
防火于未燃 依爱保平安 点击上方"依爱消防"即可订阅 厂房 一 室内外消火栓系统 1. 室外消火栓 1)厂房周围应设室外消火栓. 2)耐火等级不低于二级且建筑体积不大于3000m³ ...
- 设置固定长度_加气块砌筑(构造柱、圈梁设置)技术交底21条
墙体砌筑技术交底我给下发21条,内容不全,砌筑的墙体观感差,欢迎大家提出宝贵意见 1.填充墙的材料.平面位置尺寸见建筑施工图纸,不得随意更改. 2.当首层填充墙下无基础梁或结构梁板时,墙下应做基础,基 ...
- mysql设置索引长度_修改Mysql索引长度限制
mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...
- visio设置图片默认大小_教大家Visio怎么随意调节图形的大小
近日有关于教大家Visio怎么随意调节图形的大小的问题受到了很多网友们的关注,大多数网友都想要知道教大家Visio怎么随意调节图形的大小的具体情况,那么关于到教大家Visio怎么随意调节图形的大小的相 ...
- d3js绘制y坐标轴_使用D3.js 绘制折线图
在一个网站上绘制折线图使用了ant/g2,打包后的体积到了一兆多,这不行了,需要按需加载.但是它的支持不太友好,我尝试在官网上用它的方法来按需引入,不是缺这就是缺那,很不好用. 反正我这里只是画个折线 ...
- 【d3.js实践教程01】d3基本操作
学习d3.js(以下都简称d3)也有一段时间了,运行d3做了几个项目.我发现中文的d3教程很少,国外资料多但要求有一定的英文阅读能力(推荐网址:http://bl.ocks.org/mbostock) ...
最新文章
- C++编程语言之标准化
- 第二章 Java浮点数精确计算
- Mac终端文件类型显示不同颜色
- Java方法重载注意事项
- html5show()函数怎么写,实例:用JavaScript来操作字符串(一些字符串函数)_基础知识...
- HP ProLiant DL380 G6内存错误导致WHEA-Logger 47报警的解决
- java分页查询代码实现
- Java proxy 代理
- 超赞的8款开源聊天软件
- MCU之芯唐ARM9(转)
- 大数据的75个名词解释
- HDU4415 Assassin’s Creed
- 我开发了一款软件,完成了舔狗的绝地反杀(代码开源)!
- Revit二次开发入门捷径_升维学习、降维打击
- 计算机辅助出版的英文缩写是,计算机辅助设计的英文缩写为
- 【PyTorch】50行代码实现GAN——PyTorch
- 知乎不能改用户名吗_不知道不能随便改名字吗
- PADS画2.54mm排针
- 友推微信分享失败解决办法
- EBGP使用环回口建邻居用到ebgp-multihop和update source loopback
热门文章
- classname帝国怎么用php调用,帝国cms怎么调用栏目别名
- 资源高效搜索方法,你 Get 到了吗?
- R语言I绘制等高线图
- Sciences:Knight组发表尸体降解过程中的微生物组
- Cell子刊:16s分析之FishTaco分析
- R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标
- R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例
- R语言单因素重复测量方差分析(one-way repeated measures ANOVA)实战
- R语言nchar函数统计字符串中字符个数实战
- R语言基于glmnet构建分类模型并可视化特征系数(coefficient)以及L1正则化系数(lambda)实战