首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

鼠标悬停时d3分组条形图突出显示组

是一种数据可视化技术,通过使用d3.js库来创建分组条形图,并在鼠标悬停时突出显示特定的数据组。

分组条形图是一种用于比较多个组之间的数据差异的图表类型。它将数据分为不同的组,并使用条形的长度来表示每个组的数值大小。每个组由多个子组组成,每个子组代表该组的一个子类别。

在d3.js中,可以使用d3.scaleBand()来创建分组条形图的x轴比例尺,将每个组的名称映射到x轴上的位置。而使用d3.scaleLinear()可以创建y轴比例尺,将数值映射到y轴上的位置。

要实现鼠标悬停时突出显示特定的数据组,可以通过以下步骤:

  1. 创建分组条形图的基本结构,包括x轴、y轴和条形。
  2. 使用d3.js的数据绑定功能,将数据与条形图中的元素关联起来。
  3. 为每个条形添加鼠标悬停事件的监听器。
  4. 在鼠标悬停事件中,根据当前的数据组,修改该组对应的条形的样式,使其突出显示。
  5. 在鼠标移出事件中,恢复条形的原始样式。

以下是一个示例代码片段,展示了如何使用d3.js创建鼠标悬停时分组条形图突出显示组:

代码语言:txt
复制
// 创建SVG容器
var svg = d3.select("body")
  .append("svg")
  .attr("width", width)
  .attr("height", height);

// 定义数据
var data = [
  { group: "Group 1", subgroups: [10, 20, 30] },
  { group: "Group 2", subgroups: [15, 25, 35] },
  { group: "Group 3", subgroups: [12, 22, 32] }
];

// 创建x轴比例尺
var xScale = d3.scaleBand()
  .domain(data.map(function(d) { return d.group; }))
  .range([0, width])
  .padding(0.2);

// 创建y轴比例尺
var yScale = d3.scaleLinear()
  .domain([0, d3.max(data, function(d) { return d3.max(d.subgroups); })])
  .range([height, 0]);

// 创建条形
var bars = svg.selectAll(".bar")
  .data(data)
  .enter()
  .append("g")
  .attr("class", "bar")
  .attr("transform", function(d) { return "translate(" + xScale(d.group) + ",0)"; });

bars.selectAll("rect")
  .data(function(d) { return d.subgroups; })
  .enter()
  .append("rect")
  .attr("x", function(d, i) { return xScale.bandwidth() / data.length * i; })
  .attr("y", function(d) { return yScale(d); })
  .attr("width", xScale.bandwidth() / data.length)
  .attr("height", function(d) { return height - yScale(d); })
  .on("mouseover", function(d, i, nodes) {
    d3.select(nodes[i])
      .attr("fill", "red");
  })
  .on("mouseout", function(d, i, nodes) {
    d3.select(nodes[i])
      .attr("fill", "steelblue");
  });

// 添加x轴
svg.append("g")
  .attr("transform", "translate(0," + height + ")")
  .call(d3.axisBottom(xScale));

// 添加y轴
svg.append("g")
  .call(d3.axisLeft(yScale));

在这个示例中,我们使用了一个包含三个组的数据集。每个组都有三个子组,分别用于创建条形图中的条形。当鼠标悬停在条形上时,该条形的颜色将变为红色,当鼠标移出时,颜色恢复为蓝色。

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。如果你想了解更多关于d3.js的信息,可以参考d3.js官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

可视化图表样式使用大全

多组条形图 ? 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。...多组条形图通常用来将分组变量或类别与其他数据进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。 但缺点是,当有太多条形组合在一起将难以阅读。...堆叠式条形图共分成两种: 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。 100% 堆叠式条形图。...可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。...每个集都是一具有共同之处的物件或数据,当多个圆圈(集)相互重迭,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

9.4K10

60 种常用可视化图表,该怎么用?

当数据密集,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。...多组条形图 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。 多组条形图通常用来将分组变量或类别与其他数据进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。...堆叠式条形图共分成两种: 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。 100% 堆叠式条形图。...可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。...每个集都是一具有共同之处的物件或数据,当多个圆圈(集)相互重迭,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

8.7K10
  • 常用60类图表使用场景、制作工具推荐!

    当数据密集,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。...多组条形图 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。 多组条形图通常用来将分组变量或类别与其他数据进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。...堆叠式条形图共分成两种: 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。 100% 堆叠式条形图。...可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。...每个集都是一具有共同之处的物件或数据,当多个圆圈(集)相互重迭,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

    8.8K20

    60种常用可视化图表的使用场景——(上)

    当数据密集,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。...12、多组条形图 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。...多组条形图通常用来将分组变量或类别与其他数据进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。 但缺点是,当有太多条形组合在一起将难以阅读。...堆叠式条形图共分成两种: 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。 100% 堆叠式条形图。...会显示每组占总体的百分比,并按该每个数值占整体的百分比来绘制,可用来显示每组中数量之间的相对差异。

    20610

    60种常用可视化图表的使用场景——(下)

    32、热图 热图 (Heatmap) 通过色彩变化来显示数据,当应用在表格,热图适合用来交叉检查多变量的数据。...可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。...41、箱形图 箱形图又称为「盒须图」或「箱线图」,能方便显示数字数据的四分位数,可以垂直或水平的形式出现。...不变的位数由小至大、由上至下显示在中间的「茎」(通常是以十为单位),每个位数之内的数据则会成为「叶」并横向延伸。 除了向读者快速提供数据分布信息之外,茎叶图也可用于突出异常值和查找模式。...每个集都是一具有共同之处的物件或数据,当多个圆圈(集)相互重迭,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

    12710

    使用JavaScript和D3.js实现数据可视化

    2011年2月首次发布,在撰写本文,最新的稳定版本是4.4版本,并且不断更新。D3利用可缩放矢量图形或SVG格式,允许您渲染可放大或缩小的形状,线条和填充,而不会降低质量。...本教程将指导您使用JavaScript D3库创建条形图。 准备 为了充分利用本教程,您应该熟悉JavaScript编程语言以及CSS和HTML的知识。...此外,我们可以通过在鼠标悬停添加条形颜色样式来为我们的图表添加一些交互性: .bar:hover { fill: red } 现在,当我们将鼠标悬停在其中一个矩形上,该特定矩形将变为红色: 或者...完成的代码和代码改进 此时,您应该拥有一个在JavaScript的D3库中呈现的功能完备的条形图。让我们看看我们所有的代码文件。 barchart.html <!...例如,您可以利用SVG元素将SVG元素组合在一起,从而允许您在更少的代码行中修改文本和矩形。 您还可以通过不同方式访问数据。

    21.8K30

    JavaScript图表的数据可视化:比较D3和Kendo UI

    D3 D3代表数据驱动文档,是一个用于创建动态和交互式数据可视化的JavaScript库。它于2011年首次发布,包含一非常灵活和强大的特性,可以帮助您构建各种图形数据可视化。...此外,为了展示如何做一些基本的动画,我们还添加了一些工具提示,以便在鼠标滑过其中一个栏,可以看到该栏显示的值。 这意味着我们需要做三件基本的事情: 绘制反映单个数据值的基本栏。...在下一节中,我们将在显示区域略微移动图表。 现在我们开始讲D3部分的内容。在这里,我们告诉D3我们将使用哪些数据,并指定图表中每个条形图的基本元素。...Tool Tips 最后一件事,我将添加到两个图表是一工具提示给我们数据细节,当我们悬停在任何条。这将突出显示我们如何添加动画。...这段代码表示,当我们鼠标滑过一个列,我们会在一个特定的位置显示工具提示。该部分的最后一行与Kendo UI端上的一行类似,在那里,我们有机会提供一个模板来显示工具提示中的内容。

    11.9K30

    D3可视化:让您的仪表板更上一层楼

    与其在每件事上都使用它并淡化其有效性,不如在寻找独特方式来显示数据或以创造性方式提供信息的不同诠释使用D3。...您也可以在处理明显更大的数据集或需要特定可视化数据表示使用D3。...如何实现D3进行可视化数据 尽管有人认为学习曲线比正常情况更为陡峭,但D3 js可视化工具非常灵活且功能强大,可以在决定如何实现它们为您提供创意许可。...虽然图表本身是一个简单的圆点图,但它使用了D3创建平滑过渡并添加动态元素。用户可以将鼠标悬停在特定点上查看特定信息,随后图表会以流动动画打开使其更具视觉吸引力。...创建探索分层关系的图表 虽然条形图、饼图、线图和点阵图对审阅数据而言非常有用,但是在检查来自各种相关来源的信息,理解数据之间的分层交互可能极为有用。

    5.1K10

    大厂是怎么写数据分析报告的?

    另外由于人们看数据习惯顺时针看数据,因此可把最重要部分放到12点位置,并用对比度强烈的颜色突出显示。 饼图主要在标识单一整体各部分比例,如果需要比较两个整体的成分时,重点考虑柱状图(图3)。...根据我们所需要突出的主题,选择条形图的排序方式。展现条形图数值的方式包括刻度尺或在条形图显示数字,可根据情况选择其中一种方式,但是不要两处都显示,多余容易导致图形的混乱。...: 项目间还可能针对一个范围进行对比,这时可使用范围条形图: 当比较的项目由多个部分组成,可通过堆积条形图,必须将最重要的成分放在靠近基线的地方,因为只有这部分才可被准确度量: 5.处理“时间序列对比...相关性对比通常使用散点图或双条形图来展示。如下图: 在双条形图中,我们将独立变量按顺序排在左边,而把对比值放在右边,如果期望模式与实际模式一致,右边的条形图就会变成左边的条形图的镜像,如下面左图。...当关系不符合预期,两条形图则会发生偏离,如下面右图: 8.处理“多重对比”关系 对比可能不仅仅是一种对比关系,有可能是结合上文所说的成分、项目间、时间序列、频率分布、相关性对比中的一种或多种组合而成

    1K10

    五个创建交互式图表的Python库

    图表默认显示工具提示栏,但是目前不能放大、缩小或者平移图表。 你可以通过SVGs的形式导出图表,并且把它们加载到带有嵌入标记的网页中,或在HTML中直接插入代码。...Bokeh在允许用户在浏览器中操作数据方面做得尤为突出,用户可以通过滑动和下拉菜单进行筛选。与mpld3一样,你可以在其中缩放和平移操作图表,但是也可以关注通过框或套索选中的一数据点上。...当你把数据移入HoloView 容器对象(Container object)中,比如用于多变量分析的网格矩阵(GridMatrix)或用于显示相邻成份的布局(Layout),你可以直观地探索数据。...当使用Boken后端,你可以结合滑块和Bokeh的工具探索图形,例如对它进行缩放和平移。...范围滑块示例 从简单的条形图表到复杂的3D网格图形,Plotly拥有广泛的具有出版物品质的图表类型。

    4.4K60

    52个数据可视化图表鉴赏

    4.条形图 条形图是一种用矩形表示分组数据的图表,矩形条的长度与其表示的值成比例。可以垂直或水平绘制条形图。垂直条形图有时也称为折线图。图表的一个轴显示要比较的特定类别,另一个轴表示离散值。...25.直方图 直方图是显示分布形状的图表。直方图看起来像条形图,但将连续度量值分组到范围或数据桶中。...颜色可用于突出显示层次分组或特定类别。 40.桑基图 桑基图,即桑基能量分流图,也叫桑基能量平衡图。...42.分段条形图 当两个或多个数据集并排绘制并分组在同一轴上的类别下,可以使用如图的条形图的这种变化。与条形图一样,每个条形图的长度用于显示类别之间的离散数值比较。...这种格式对于快速识别最突出的术语和按字母顺序定位术语以确定其相对突出程度非常有用。当用作网站导航辅助工具,术语会超链接到与标记关联的项目。

    5.8K21

    Google数据可视化团队:数据可视化指南(中文版)

    柱状图(条形图)和饼图 柱状图(条形图)和饼图都可用于显示比例,表示部分与总体的对比。...面积图 面积图有多种类型,包括堆叠面积图和层叠面积图: · 堆叠面积图显示多个时间序列(在同一间段内)堆叠在一起 · 层叠面积图显示多个时间序列(在同一间段内)重叠在一起 层叠面积图建议不要使用超过两个时间序列...图标可用于: · 分类数据:用于区分组或类别 · UI控件和操作:例如筛选,缩放,保存和下载 · 状态:例如错误,空状态,完成状态和危险 在图表中使用图标,建议使用通用可识别符号,尤其是在表示操作或状态...坐标轴 一个或多个坐标轴显示数据的比例和范围。例如,折线图沿水平和垂直坐标轴显示一系列值。 ? 柱状图(条形图)基线 柱状图(条形图)应从为零的基线(y轴上的起始值)开始。...在密集的图表(或更大的图表的一部分)中,可以用图例。 ? 8. 小显示屏 可穿戴设备(或其他小屏幕)上显示的图表应该是移动端或PC端图表的简化版本。 ?

    5.1K31

    《七天数据可视化之旅》第六天:提升可视化效果的Tips

    2.图表设计要隐藏不必要元素,弱化辅助元素 在我们进行图表绘制,需要去掉无意义的背景色填充和颜色区分,弱化网格线,突出真正重要的数据信息。...常见的交互方式有: 1)移动和缩放:当前空间只能显示有限的数据,或者需要关注局部数据,可以使用移动和缩放。 ? 一般情况下,移动和缩放是同时使用的两个交互动作。...当需要按照某一个维度进行分组,若该维度的属性值数目较多,那么就需要对属性值进行重新的归类和分组,通常的做法是,保留占比或实际值TOP5的分类项,剩余分类归为【其他】。 ?...3.当排行数据的类别名称较长,可以用条形图替换柱状图 当类别名称太长,虽然斜放可以避免重叠,但歪着头查看内容,和用户阅读的视觉习惯不符,此时可以考虑把柱条横向放置,把类别的名称置于柱条空隙之间或者柱形条左侧...; 趋势图坐标轴可以不从0开始,但是要慎用; 系列名称较长,需用条形图,横向摆放系列名称; 确立统一规则,对图表坐标轴数值进行单位转化; 如若大家对提升数据可视化效果这方面,有一些自己的总结,欢迎评论区补充和交流

    99120

    C++ Qt开发:Charts绘制各类图表详解

    分组柱状图(Grouped Bar Chart):将柱按照类别分组,同一内的柱一般在相同的位置。 堆叠柱状图(Stacked Bar Chart):将柱叠加在一起,柱的高度表示总和。...QBarCategoryAxis 表示条形图横坐标,用于管理和显示条形图中的分类轴,其中每个条形图都属于特定的类别。...hovered(QPieSlice *slice, bool state) 鼠标悬停在饼块上发出的信号,参数为被悬停的饼块和悬停状态。...clicked(bool state) 鼠标点击饼块发出的信号,参数为鼠标点击的状态(按下或释放)。 hovered(bool state) 鼠标悬停在饼块上发出的信号,参数为悬停状态。...hovered(QPointF point, bool state) 鼠标悬停在曲线上发出的信号,参数为悬停状态以及悬停位置的数据点坐标。

    92110

    谷歌Material Design可视化数据设计规范指南

    柱状图(条形图)和饼图 柱状图(条形图)和饼图都可用于显示比例,表示部分与总体的对比。...面积图 面积图有多种类型,包括堆叠面积图和层叠面积图: · 堆叠面积图显示多个时间序列(在同一间段内)堆叠在一起 · 层叠面积图显示多个时间序列(在同一间段内)重叠在一起 层叠面积图建议不要使用超过两个时间序列...图标可用于: · 分类数据:用于区分组或类别 · UI控件和操作:例如筛选,缩放,保存和下载 · 状态:例如错误,空状态,完成状态和危险 在图表中使用图标,建议使用通用可识别符号,尤其是在表示操作或状态...坐标轴 一个或多个坐标轴显示数据的比例和范围。例如,折线图沿水平和垂直坐标轴显示一系列值。 柱状图(条形图)基线 柱状图(条形图)应从为零的基线(y轴上的起始值)开始。...在密集的图表(或更大的图表的一部分)中,可以用图例。 8. 小显示屏 可穿戴设备(或其他小屏幕)上显示的图表应该是移动端或PC端图表的简化版本。 行为 图表具有交互模式,使用户可以控制图表数据。

    3.8K21
    领券