Javascript 如何在D3鼠标上方添加文本?
我正在做D3中的热图,我不知道如何在鼠标上方添加文本。我不知道如何进行。如果你能给我一些线索,我将不胜感激。在下面的代码片段中,您可以找到代码。工作和非工作代码块。谢谢Javascript 如何在D3鼠标上方添加文本?,javascript,d3.js,Javascript,D3.js,我正在做D3中的热图,我不知道如何在鼠标上方添加文本。我不知道如何进行。如果你能给我一些线索,我将不胜感激。在下面的代码片段中,您可以找到代码。工作和非工作代码块。谢谢 console.log(d3) let screenWidth = 800 let screenHeight = 400 //load data d3.csv('./datos/locations.csv').then(function(data){ let filtered = [] for(let it
console.log(d3)
let screenWidth = 800
let screenHeight = 400
//load data
d3.csv('./datos/locations.csv').then(function(data){
let filtered = []
for(let item of data) {
if(item.location === "location one") {
filtered.push(item)
}
}
build(filtered)
})
//Create canvas
function createSVG() {
let container = d3.select('#container')
svg = container.append('svg')
.attr('id', 'canvas')
.attr('width', screenWidth)
.attr('height', screenHeight)
}
//Create chart
function build(data) {
let rectWidth = screenWidth / 24
let rectHeight = screenHeight / 7
let rects = svg.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('x', function(d,i) {
return (parseInt(d.hour) - 1) * rectWidth})
.attr('y', function(d,i){
return (parseInt(d.day) - 1) * rectHeight})
.attr('height', rectHeight)
.attr('width', rectWidth)
.style('fill', 'black')
.style('stroke', 'white')
.on('mouseover', function(d,i) {
let rects = d3.select(this)
.append('text')
.attr('x')
.attr('y')
.style('font-weight', 500)
.style('font-family', 'Arial')
.style('fill', 'red')
.text(function (d,i) {return d.value})})
}
function main() {
createSVG()
build()
}
main()
```
节点不能是
s的子节点,就像
s或
s不能一样。它们是图形节点,并不意味着要有子节点。将工具提示附加到SVG或
这意味着您不能再通过函数(d,i){return d.value}
访问d.value
,但您可以获得它,因为您可以从访问d
。在('mouseover',函数(d,i){
,只需删除d.value
以外的所有内容即可
如果使用
中的x
和y
,将会发生的情况是
元素覆盖
,捕捉鼠标事件并立即在
上触发鼠标出
。因为您可能想要删除鼠标出
上的工具提示,您将得到文本node闪烁打开和关闭。将文本向右移动至少rectWidth
,或使用d3.event
获取事件的鼠标坐标,并使用类似.attr('x',d3.event.clientX+10)的方法将其稍微向下和向右定位
将其向右移动。
节点不能是
的子节点,就像
或
不能一样。它们是图形节点,并不意味着要有子节点。请将工具提示附加到SVG或
中
这意味着您不能再通过函数(d,i){return d.value}
访问d.value
,但您可以获得它,因为您可以从访问d
。在('mouseover',函数(d,i){
,只需删除d.value
以外的所有内容即可
如果使用
中的x
和y
,将会发生的情况是
元素覆盖
,捕捉鼠标事件并立即在
上触发鼠标出
。因为您可能想要删除鼠标出
上的工具提示,您将得到文本node闪烁打开和关闭。将文本向右移动至少rectWidth
,或使用d3.event
获取事件的鼠标坐标,并使用类似.attr('x',d3.event.clientX+10)的方法将其稍微向下和向右定位
将其向右移动。您可以将带有position:absolute
的
附加到主体上,并将其放置在mousemove事件上。更改不透明度以更新其显示或隐藏
var div = d3.select('body').append('div')
.attr('class', 'tooltip')
.style('opacity', 0);
...
.on('mouseover', function(d) {
div.transition()
.duration(200)
.style('opacity', .9);
div.html('<h3>' + d.status + '</h3>' + '<p>' + timeFormat(new Date(d.date)) + ' at ' + monthDayFormat(new Date(d.date)) + '</p>')
.style('left', (d3.event.pageX) + 'px')
.style('top', (d3.event.pageY - 28) + 'px');
})
var div=d3。选择('body')。追加('div'))
.attr('类','工具提示')
.style('opacity',0);
...
.on('mouseover',函数(d){
过渡部()
.持续时间(200)
.style('opacity',.9);
div.html(“”+d.status+“”+”“+时间格式(新日期(d.Date))+”在“+monthDayFormat(新日期(d.Date))+””)
.style('left',(d3.event.pageX)+'px')
.style('top',(d3.event.pageY-28)+'px');
})
您可以将带有位置:绝对的的
附加到主体上,并将其放置在mousemove事件上。更改不透明度以更新其显示或隐藏
var div = d3.select('body').append('div')
.attr('class', 'tooltip')
.style('opacity', 0);
...
.on('mouseover', function(d) {
div.transition()
.duration(200)
.style('opacity', .9);
div.html('<h3>' + d.status + '</h3>' + '<p>' + timeFormat(new Date(d.date)) + ' at ' + monthDayFormat(new Date(d.date)) + '</p>')
.style('left', (d3.event.pageX) + 'px')
.style('top', (d3.event.pageY - 28) + 'px');
})
var div=d3。选择('body')。追加('div'))
.attr('类','工具提示')
.style('opacity',0);
...
.on('mouseover',函数(d){
过渡部()
.持续时间(200)
.style('opacity',.9);
div.html(“”+d.status+“”+”“+时间格式(新日期(d.Date))+”在“+monthDayFormat(新日期(d.Date))+””)
.style('left',(d3.event.pageX)+'px')
.style('top',(d3.event.pageY-28)+'px');
})
d3是一个高度依赖调试的框架。对于未来的问题,请将代码转换为a,这将帮助您获得更好的答案。另请参阅d3是一个高度依赖调试的框架。对于未来的问题,请将代码转换为a,这将帮助您获得更好的答案。另请参阅