散点图主要还是使用 svg 的 path元素,设置path元素的 d属性即可。 x轴,y轴都是 线性轴,这个比较简单。

核心代码是这三句

  .attr('d', d => `M${xScale(d.xValue)}, ${yScale(d.yValue)}h0`).attr("stroke-linecap", "round").attr("stroke-width", 20)

stroke-linecap 用于设置 开放路径的描边
值有这么几种 butt | round | square | inherit

<?xml version="1.0"?>
<svg width="120" height="120"viewPort="0 0 120 120" version="1.1"xmlns="http://www.w3.org/2000/svg"><line stroke-linecap="butt"x1="30" y1="30" x2="30" y2="90"stroke="black" stroke-width="20"/><line stroke-linecap="round"x1="60" y1="30" x2="60" y2="90"stroke="black" stroke-width="20"/><line stroke-linecap="square"x1="90" y1="30" x2="90" y2="90"stroke="black" stroke-width="20"/><path d="M30,30 L30,90 M60,30 L60,90 M90,30 L90,90"stroke="white" />
</svg>

对应的效果

stroke-width 属性可以用于控制 点的大小。

<!DOCTYPE html>
<html><head><title>基础散点图</title>
</head><body><svg id="main" width="800" height="800"></svg><script src="https://cdn.jsdelivr.net/npm/d3@7.0.1/dist/d3.min.js"></script><script>const originData = [[10.0, 8.04],[8.07, 6.95],[13.0, 7.58],[9.05, 8.81],[11.0, 8.33],[14.0, 7.66],[13.4, 6.81],[10.0, 6.33],[14.0, 8.96],[12.5, 6.82],[9.15, 7.20],[11.5, 7.20],[3.03, 4.23],[12.2, 7.83],[2.02, 4.47],[1.05, 3.33],[4.05, 4.96],[6.03, 7.24],[12.0, 6.26],[12.0, 8.84],[7.08, 5.82],[5.02, 5.68]]const data = originData.map(x => {return { xValue: x[0], yValue: x[1] }})const svg = d3.select("#main")const width = svg.attr('width')const height = svg.attr('height')const margin = { top: 60, right: 30, bottom: 60, left: 200 }const innerHeight = height - margin.top - margin.bottomconst innerWidth = width - margin.left - margin.rightconst g = svg.append('g').attr('id', 'maingroup').attr('transform', `translate(${margin.left}, ${margin.top})`)const xScale = d3.scaleLinear().domain([0, d3.max(data, x => x.xValue)]).range([0, innerWidth]).nice()const yScale = d3.scaleLinear().domain([0, d3.max(data, x => x.yValue)]).range([innerHeight, 0]).nice()g.selectAll('.scatter').data(data).join('path').attr('class', 'scatter').attr('d', d => `M${xScale(d.xValue)}, ${yScale(d.yValue)}h0`).attr("stroke", "steelblue").attr("stroke-linecap", "round").attr("stroke-width", 20).attr('fill', '#5470c6')const yAxis = d3.axisLeft(yScale)const xAxis = d3.axisBottom(xScale)g.append('g').call(yAxis)g.append('g').call(xAxis).attr('transform', `translate(0, ${innerHeight})`)d3.selectAll('.tick text').attr('font-size', '2em')g.append('text').text('基础散点图').attr('font-size', '3em').attr('x', innerWidth / 2 - 200).attr('y', -10)</script>
</body></html>

d3成神之路(六):散点图相关推荐

  1. d3成神之路(三):折线图

    <!DOCTYPE html> <html><head><title>先做一个柱状图</title></head><bod ...

  2. vim 成“神“之路 (一)

    文章目录 1. 安装 1.1 linux 1.2 MacOs的安装 1.3 Windows的安装 1.4 vim中文帮助文档安装 2. vim基本概念和基础命令 2.1 基本的键位映射如下: 2.2 ...

  3. Java成神之路[转]

    阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 ...

  4. JVM成神之路-Java内存模型(JMM)

    Java 内存模型基础 什么是 Java 内存模型(JMM-共享内存模型) 内存模型描述了程序中各个变量(实例域.静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量 ...

  5. 大数据成神之路(持续更新)

    <2021年最新版大数据面试题全面开启更新> <2021年最新版大数据面试题全面开启更新> 已经在公众号更新文章目录: 大数据成神之路-Java高级特性增强 - 大数据成神之路 ...

  6. 阿里巴巴开发手册最新版、码出高效、性能调优实战、成神之路

    清幽现云山, 虚静出内功 <阿里巴巴Java开发手册>是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.单元测试规约.异常日志规约.MySQL规约.工程规约.安全规约等,这是近万名阿 ...

  7. (上)史上最全 Flink SQL 成神之路(全文 18 万字、138 个案例、42 张图)

    1.前言 看了那么多的技术文,你能明白作者想让你在读完文章后学到什么吗? 大数据羊说__的文章会让你明白 博主会阐明博主期望本文能给小伙伴们带来什么帮助,让小伙伴萌能直观明白博主的心思 博主会以实际的 ...

  8. 《Java工程师成神之路》终于免费开放下载了!

    很多Java程序员一直希望找到一份完整的学习路径,但是市面上很多书都是专注某一个领域的,没有一份完整的大图,以至于很多程序员很迷茫,不知道自己到底应该从哪里开始学,或者不知道自己学习些什么. 好在,很 ...

  9. Java成神之路技术整理

    转载自 Java成神之路技术整理 以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,会从以下几个方面汇总,本文会长期更新. Java 基础篇 Java 集合篇 Java 多线程篇 J ...

最新文章

  1. 分库分表之后,主键的处理方法
  2. 计算机桌面分页,电脑word文档怎么快速分页?
  3. 数据库-sql-面试-rank
  4. 计算机图形学真实绘图实验报告,计算机图形学实验报告.doc
  5. 2!=5 or 0在python中是否正确-python and or用法
  6. linux下部署tomcat服务器之安装jdk
  7. Spring Hello World
  8. android 带图片的弹幕,一个可以支持文本,图片,文本+表情的简单弹幕插件
  9. GBDT 入门教程之原理、所解决的问题、应用场景讲解
  10. java nio技术_攻破JAVA NIO技术壁垒
  11. 论文浅尝 | 提取计数量词丰富知识库
  12. 使用mysqlsla 分析 mysql logs
  13. 解决方案:Gateway实现全局跨域
  14. Detours使用方法,简单明了
  15. Springboot JPA注解@Enumerated
  16. 技术牛人---章文嵩博士---阿里副总裁章文嵩:淘宝基础设施构建实践
  17. 编写脚本程序程序,将当前目录下所有的.txt文件更名为.doc文件。
  18. 微信公众号-模板消息管理
  19. MBA-day24 最值问题
  20. Navicat Premium 12 下载、安装、及注册机破解

热门文章

  1. 经验分享:计算机学生应该如何规划好大学四年的学习?
  2. sci计算机画曲线图,SCI文章写作之图表处理
  3. 英特尔酷睿i3和i5的区别是什么?
  4. python使用面向对象思想开发一个人机对战的猜拳游戏(石头剪刀布)
  5. 雷蛇灯光配置文件_信仰绿轴?雷蛇RAZER黑寡妇蜘蛛X竞技版(背光款)点评
  6. NFC默认小米钱包与Android,小米8上常见的NFC功能,如何使用到?
  7. NFC读取写入简单使用
  8. Git 学习笔记:5 分布式工作流程
  9. 今日头条2018秋招编程题
  10. C语言常用编程技巧-结构体数组