D3.js绘制柱形图

2023-12-30 04:08
文章标签 js 绘制 柱形图 d3

本文主要是介绍D3.js绘制柱形图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意:此次绘制的柱形图不涉及坐标。

步骤:

一.添加矩形。

  <script type="text/javascript">var datest = [30,78,90,210,105,98,150,177];     //绘制柱形图所用的数据var width = 400;        //svg绘图区域的宽度var height = 400;       //svg绘图区域的高度var svg = d3.select('body')       //选择<tbody>.append('svg')					//在<tbody>中添加<svg>.attr('width', width)				//设置<svg>的宽度属性.attr('height', height)				//设置<svg>的高度属性var padding = {top: 20, right: 20, bottom: 20, left: 20};     //定义上下左右的内边距//矩形所占的宽度(包括空白)var rectStep = 35;//矩形所占的宽度(不包括空白)var rectWidth = 30;//绘制矩形var rect = svg.selectAll('rect')			.data(datest)							//绑定数据.enter()									.append('rect')						//添加rect元素,使他的数量和数组长度一致.attr('fill', 'steelblue')      //设置颜色为steelblue.attr('x', function(d,i) {return padding.left + i * rectStep;					//设置矩形的x坐标}).attr('y', function(d) {return height - padding.bottom - d;        //设置矩形的y坐标}).attr('width', rectWidth)                //设置矩形的宽度.attr('height', function(d) {return d;														//设置矩形的高度});</script>

效果图:


二.添加文字。

		//添加文字部分var text = svg.selectAll('text').data(datest).enter().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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;})

效果图:


三.更新数据。

	  //更新数据function draw() {//获取矩形的update部分var updateRect = svg.selectAll('rect').data(datest);//获取矩形的enter部分var enterRect = updateRect.enter();//获取矩形的exit部分var exitRect = updateRect.exit();//1.矩形的update部分的处理方法updateRect.attr('fill', 'steelblue')      //设置颜色为steelblue.attr('x', function(d,i) {       //设置矩形的x坐标return padding.left + i * rectStep;}).attr('y', function(d) {         //设置矩形的y坐标return height - padding.bottom - d;}).attr('width', rectWidth)        //设置矩形的宽度.attr('height', function(d) {			//设置矩形的高度return d;});//2.矩形的enter部分处理办法enterRect.append('rect').attr('fill', 'steelblue')        //设置矩形的颜色.attr('x', function(d,i) {        //设置矩形的x坐标return padding.left + i * rectStep;}).attr('y', function(d) {						//设置巨型的y坐标return height - padding.bottom - d;}).attr('width', rectWidth)        //设置矩形的宽度.attr('height', function(d) {			//设置矩形的高度return d;});//3.矩形的exit处理方法exitRect.remove();//获取文字的update部分var updateText = svg.selectAll('text').data(datest);//获取文字的enter部分var enterText = updateText.enter();//获取文字的exit部分var exitText = updateText.exit();//1.文字的update部分的处理方法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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;});//2.文字的enter部分的处理方法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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;});//3.文字的exit处理办法exitText.remove();}//排序函数function mySort() {datest.sort(d3.ascending);draw();}//增加一个项函数function myAdd() {datest.push(Math.floor(Math.random() * 100));draw();}</script><div class="box"><button type="button" onclick="mySort()">排序</button><button type="button" onclick="myAdd()">增加数据</button></div>
</body>

 

效果图:

 

 


全部代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style type="text/css">.box {width: 300px;display: flex;flex-direction: row;justify-content: space-around;margin-bottom: 50px;}</style><script src="https://cdn.bootcss.com/d3/3.2.1/d3.js"></script>
</head>
<body><script type="text/javascript">var datest = [30,78,90,210,105,98,150,177];     //绘制柱形图所用的数据var width = 500;        //svg绘图区域的宽度var height = 500;       //svg绘图区域的高度var svg = d3.select('body')       //选择<tbody>.append('svg')					//在<tbody>中添加<svg>.attr('width', width)				//设置<svg>的宽度属性.attr('height', height)				//设置<svg>的高度属性var padding = {top: 20, right: 20, bottom: 20, left: 20};     //定义上下左右的内边距//矩形所占的宽度(包括空白)var rectStep = 35;//矩形所占的宽度(不包括空白)var rectWidth = 30;//绘制矩形var rect = svg.selectAll('rect')			.data(datest)							//绑定数据.enter()									.append('rect')						//添加rect元素,使他的数量和数组长度一致.attr('fill', 'steelblue')      //设置颜色为steelblue.attr('x', function(d,i) {return padding.left + i * rectStep;					//设置矩形的x坐标}).attr('y', function(d) {return height - padding.bottom - d;        //设置矩形的y坐标}).attr('width', rectWidth)                //设置矩形的宽度.attr('height', function(d) {return d;														//设置矩形的高度});//添加文字部分var text = svg.selectAll('text').data(datest).enter().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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;});//更新数据function draw() {//获取矩形的update部分var updateRect = svg.selectAll('rect').data(datest);//获取矩形的enter部分var enterRect = updateRect.enter();//获取矩形的exit部分var exitRect = updateRect.exit();//1.矩形的update部分的处理方法updateRect.attr('fill', 'steelblue')      //设置颜色为steelblue.attr('x', function(d,i) {       //设置矩形的x坐标return padding.left + i * rectStep;}).attr('y', function(d) {         //设置矩形的y坐标return height - padding.bottom - d;}).attr('width', rectWidth)        //设置矩形的宽度.attr('height', function(d) {			//设置矩形的高度return d;});//2.矩形的enter部分处理办法enterRect.append('rect').attr('fill', 'steelblue')        //设置矩形的颜色.attr('x', function(d,i) {        //设置矩形的x坐标return padding.left + i * rectStep;}).attr('y', function(d) {						//设置巨型的y坐标return height - padding.bottom - d;}).attr('width', rectWidth)        //设置矩形的宽度.attr('height', function(d) {			//设置矩形的高度return d;});//3.矩形的exit处理方法exitRect.remove();//获取文字的update部分var updateText = svg.selectAll('text').data(datest);//获取文字的enter部分var enterText = updateText.enter();//获取文字的exit部分var exitText = updateText.exit();//1.文字的update部分的处理方法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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;});//2.文字的enter部分的处理方法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) {return height - padding.bottom - d;}).attr('dx', rectWidth / 2)         //dx是相对于x平移的大小.attr('dy', '1em')								//dy是相对于y平移的大小.text(function(d) {return d;});//3.文字的exit处理办法exitText.remove();}//排序函数function mySort() {datest.sort(d3.ascending);draw();}//增加一个项函数function myAdd() {datest.push(Math.floor(Math.random() * 100));draw();}</script><div class="box"><button type="button" onclick="mySort()">排序</button><button type="button" onclick="myAdd()">增加数据</button></div>
</body>
</html

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于D3.js绘制柱形图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551656

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件