在d3.js中的工具提示中绘图
Plot within a tooltip in d3.js
我想创建一个基于d3的绘图,在工具提示中绘制绘图。不幸的是,我在网上没有找到任何例子。下面是一个示例JSON文件。
[{"x":[0.4],
"y":[0.2],
"scatter.x":[0.54,0.9297,0.6024,-1.9224,2.2819],
"scatter.y":[0.4139,1.1298,-0.1119,2.3624,-1.1947]},
{"x":[0.1],
"y":[0.9],
"scatter.x":[-0.8566,-0.5806,-0.9326,0.8329,-0.5792],
"scatter.y":[-0.5462,-0.7054,1.0264,-3.4874,-1.0431]}]
这个想法是首先为(x,y)坐标绘制一个散点图。但是,当鼠标悬停在某个点上时,工具提示中会根据相应点的[stratter.x,scatter.y]坐标显示不同的散点图。
我可以单独绘制散点图,但一直在努力将它们组合在一起。有人能阐明这一点和/或提供一个最小的例子吗?
这太长了,无法发表评论,但我不确定这是否是您想要的答案。您可能会发现的一个问题是,嵌套数据的格式不同——一个使用带有x
和y
的JSON对象,而另一个使用两个点数组。
我的解决方案是创建一个可扩展的函数:
function makeScatterPlot(elem, width, height, data, fill)
elem
、width
、height
和data
是核心参数:将图表附加到哪个元素、图表的大小以及图表的数据(JSON对象格式)。
此函数将为图表生成所有必要的项目,并将图表添加到所提供的元素中。
然后,您需要绑定到主图表的mouseover
,在该函数中,您必须进行一些数据修改,才能将两个数组重新组织到JSON对象结构中。
function mainMouseover(d){
var newData = [];
for (var i = 0; i < d["scatter.x"].length; i++){
var t = {x: [0], y: [0]};
t.x[0] = d["scatter.x"][i];
t.y[0] = d["scatter.y"][i];
newData.push(t);
}
var newG = mainG.append("g").attr("transform", "translate(200,200)");
makeScatterPlot(newG, 100,100, newData, "red");
}
当然,您可以修改translate
,使其与工具提示所在的位置相匹配。
把这些放在一起,你会得到以下(非常粗糙的)小提琴。将鼠标悬停在任一黑点上可以查看子图表。显然,这需要做大量的工作才能成为一个坚实的例子(即删除mouseout
上的子图),但希望它能让你朝着正确的方向前进。
如果工具提示图表的样式与主图表明显不同,那么使用可扩展函数可能不是最好的主意,您可以创建另一个自定义函数。
相关文章:
- d3.js Chord图的动态工具提示
- Graphiti中是否有任何工具提示功能
- "工具提示"jQuery插件坏了
- 单元格的工具提示或标题不显示超过2000个字符
- d3.js用按钮更新条形图工具提示
- 使Intro.js工具提示响应
- 画布中绘制的矩形区域的弹出工具提示
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- 禁用NVD3 multiBarHorizontalChart中0值的工具提示
- 如何更改已显示的工具提示
- 如何访问高图表工具提示中的任何特定数据
- 如何在jQuery点击函数中添加并显示引导工具提示
- 我可以't使用jQuery更改工具提示引导程序的位置
- 语义UI中格式化的工具提示
- 柱状图上的Highcharts工具提示
- 引导工具提示用法,在搜索字段中
- 在d3.js中的工具提示中绘图
- 如何在绘图线上获得静态工具提示,highstock
- 如何使用dojocharts为指标绘图添加工具提示
- 如何在绘图带上显示工具提示或图例