d3成神之路(二):第二个柱状图

2023-11-04 01:20

本文主要是介绍d3成神之路(二):第二个柱状图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

核心代码是理解
data(data)
join("rect")
.attr("height", d => yScale(0) - yScale(d.value))

const yScale = d3.scaleLinear().domain([0, d3.max(data, x => x.value)]).range([innerHeight, 0])

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>先做一个柱状图</title><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
</head><body><svg width="800" height="800" id="main" class="svg"></svg><script src="https://cdn.jsdelivr.net/npm/d3@7.0.1/dist/d3.min.js"></script><script>const data = [{ name: 'a', value: 1 },{ name: 'b', value: 2 },{ name: 'c', value: 3 },{ name: 'd', value: 4 },{ name: 'e', value: 5 },]const svg = d3.select('#main');const width = svg.attr('width');const height = svg.attr('height');const margin = { top: 60, right: 30, bottom: 60, left: 50 }const innerWidth = width - margin.right - margin.leftconst innerHeight = height - margin.top - margin.bottomconst xScale = d3.scaleBand().domain(data.map(x => x.name)).range([0, innerWidth]).padding(0.5)const yScale = d3.scaleLinear().domain([0, d3.max(data, x => x.value)]).range([innerHeight, 0])const g = svg.append('g').attr('id', 'maingroup').attr('transform', `translate(${margin.left},${margin.top})`)const yAxis = d3.axisLeft(yScale)g.append('g').call(yAxis)const xAxis = d3.axisBottom(xScale)g.append('g').call(xAxis).attr('transform', `translate(0, ${innerHeight})`)const bar = g.append("g").attr("fill", "steelblue").selectAll("rect").data(data).join("rect").style("mix-blend-mode", "multiply").attr("x", d => xScale(d.name)).attr("y", d => yScale(d.value)).attr("height", d => yScale(0) - yScale(d.value)).attr("width", xScale.bandwidth());</script>
</body></html>

这篇关于d3成神之路(二):第二个柱状图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下: num_points = 100x = np.random.rand(num_points) #x点位随机y = np.random.rand(num_points) #y点位随机colors = np.random.rand(num_points) #颜色随机sizes = 1000 * np.random.rand(num_points) # 大

我的第一次份实习工作-iOS实习生-第二个月

第二个月 来公司过了一个月了。每天早上9点上班,到晚上6.30下班,上下班要指纹打卡,第一个月忘了打卡好多次(),然后还要去补打卡单。公司这边还安排了,工资卡办理,招商银行卡。开了一次新员工大会,认识了公司的一些过往,公司的要求等,还加了一下公司的企业QQ,还有其他的羽毛球群,篮球群。我加了下羽毛球群,也去打了一两次。第二个月的感受,感觉跟组里面的交流跟沟通都好少,基本上还有好多人不认识。想想也

Xiaojie雷达之路---雷达间干扰(二)置零法对干扰抑制

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下时域置零对雷达间干扰抑制的效果,一起来看看吧!!! 文章目录 前言正文原理性介绍代码 前言 在上一篇文章中介绍了BPM对雷达间干扰抑制的方法,而本篇文章是采用时域置零的方法进行雷达间干扰抑制 效果图: 视频如下: 雷达间干扰 正文

Echarts使用笔记--饼图,柱状图

开始做前端了,感觉自己是要变成全栈工程师了。。。 今天使用了echart,用之前觉得好高大上好厉害,肯定很复杂。用了以后才发现,使用起来超简单,当然,精通很难,里面的各种配置太多了,本文记录一下自己用到的东西。 echart使用 现在直接引用js文件就可以了 <script src="echarts.min.js"></script> echart组件需要在一个宽高固定的DOM里才能显示

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

echarts 多个3D柱状图

图片样式: 代码实现: <template><div :class="className" :style="{height:height,width:width}" /></template><script>require("echarts/theme/sakura"); // echarts themeexport default {props: {className: {typ

【每日一题】LeetCode 84.柱状图中最大的矩形(栈、数组、单调栈)

【每日一题】LeetCode 84.柱状图中最大的矩形(栈、数组、单调栈) 题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 这个题目和接雨水非常类似 点击跳转接雨水 LeetCode 40.接雨水 输入示例 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的

在 vue2 中实现 echarts 立体方形柱状图及立体圆柱

1、在做大屏项目时,为了页面不显得单调,有时设计会设计些立体的柱状图,前几天做大屏刚好遇到,记录一下。echarts本身没有配置直接配置立体图,立体图实质是三个图形合并堆积形成的视觉效果,分别是上面的盖,中间主体和下面的底,再配合中间主体的渐变颜色而实现。本文默认都是使用过echarts的,常规项不赘述,只看option的配置项,先上效果。 2、立体方块图  pdChartOptio

填坑之路-记录Redis操作的异常QueryTimeoutException RedisCommandTimeoutException: Command timed out after 1 min

默认配置 1.命令执行的默认超时时间为1分钟 2.默认的Lettuce集群配置里面才有命令执行超时时间,源码请看:LettuceConnectionFactory 3.修改命令超时时间,请手动修改配置构造器中的配置:LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder 中的setCommandTime