96SEO 2026-02-20 10:17 0
终于来到了本章代码量最为密集的最后一个小节了。

作者真的是事无巨细真正把大家当成零基础的数据可视化爱好者竟然细致到
的注释是怎么加的也要说明一下……不过这也算是本书的一大魅力吧。
也多亏了这份执着和对细节把控的精益求精新版才出现了这么多直观精美的配图。
由于篇幅太长本节最后的人物专访就放到下篇本文为上篇主要介绍条形图的最终实现。
一起跟随作者实战起来吧
示例条形图就快做完了但目前还不知道哪个矩形条对应哪个技术也不知道矩形条的长度代表哪些票数。
这些问题只要给图表加两组标签label就能解决第一组列出技术名称放在左侧第二组则显示各矩形条对应的
文本元素text实现先将各矩形条分别与两个文本元素相结合然后将其一同嵌入
分组元素的知识这里可以用分组元素将多个子元素视为一个整体进行平移以便于后续将绑定数据传递给它的后代元素。
接下来需要稍微重构一下代码。
首先注释掉与矩形条元素相关的所有代码行留待后用。
在
的分组元素g上而不是之前的矩形条上。
然后将该选择集赋给一个常量
svg.selectAll(g).data(data).join(g);为了让矩形条与标签元素同步移动可以利用
0以及垂直平移量这里设为各矩形条的垂直坐标由之前定义好的分段比例尺函数
svg.selectAll(g).data(data).join(g).attr(transform,
的分组元素没有可视化的图形表示也不以占据某个有界空间的形式存在但我们仍然可以将其想象成能够封装所有子元素的内容盒。
借助
所示。
各矩形条及其标签元素将相对于它们所在的父级分组元素进行定位
svg.selectAll(g).data(data).join(g).attr(transform,
${yScale(d.technology)}));barAndLabel.append(rect);由于该选择集包含多个分组元素D3
会分别给每个分组添加一个矩形元素。
保存项目并使用检查工具进行查看确认它们都已经添加到了
数据绑定的一大好处是绑定的数据会传递给分组内的所有后代元素。
因此矩形条依然可以像之前那样拿到数据唯一的区别是矩形的
barAndLabel.append(rect).attr(width,
矩形不用再做垂直平移其定位相对于其父级分组元素的位置.attr(fill,
yellowgreen:skyblue);这时就能看到各个矩形条了效果和之前完全相同详见图
文本元素分别添加进去。
由于各标签需要展示每个对应的技术名称因此需要再链式调用一次
方法。
该方法只接受一个参数文本元素要显示的文本内容。
本例则需要根据每个绑定的数据项动态设置对应的文本内容
barAndLabel.append(text).text(d
属性给每个标签定位。
先来看水平方向各标签末端要同矩形条的起始位置对齐。
矩形条从
再来看垂直方向。
由于各标签的定位相对于所在的父级分组元素只需稍向下平移即可与矩形条居中对齐。
注意SVG
文本元素的垂直定位是相对于它的基线baseline而言的。
经反复试错与微调最终给定的
像素。
位置的微调可以在浏览器的检查工具inspector里快速实现
barAndLabel.append(text).text(d
barAndLabel.append(text).text(d
接着再在矩形条的另一端添加一组标签显示该技术在问卷调查中的得票数做法与添加技术名称标签类似。
先调用
选择集常量然后在每个分组元素内添加一个文本元素再通过链式调用的
barAndLabel.append(text).text(d
d.count)由于计数标签位于矩形条的末端而矩形条的水平坐标可以通过
barAndLabel.append(text).text(d
小一些目的是为了让两组标签保持视觉上的层次感。
较大的标签更吸引眼球也便于让观众理解得票数是次于技术名称的样式设计。
barAndLabel.append(text).text(d
9px);最后一步再在条形图左侧绘制一条垂直线作为垂直方向的轴线。
在以下代码片段中我们将这条线段添加到
进行访问。
值得一提的是本章给标签预留间距的做法并不常用。
业内更通用的实现方案是遵守
convention具体内容将在下一章进行介绍后续章节也将按这种写法来进行讲解。
恭喜您完成了本章的学习——知识点着实很密集如果还没有掌握讲过的所有概念也不必过于担心。
后续章节还将继续提到这些概念相信很快就能融会贯通
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback