我用d3.js绘制散点图 在这个问题的帮助下: 获取屏幕的大小,当前网页和浏览器窗口 我正在使用这个答案: var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], x = w.innerWidth || e.clientWidth || g.clientWidth, y = w.innerHeight|| e.clientHeight|| g.clientHeight; 所以我可以像这样把我的情节适合用户的窗口: var svg = d3.select("body").append("svg") .attr("width", x) .attr("height", y) .append("g"); 现在,我希望在用户调整窗口大小时重新resize。 PS:我没有在我的代码中使用jQuery。
我使用D3来生成条形图(我修改了这个例子中的代码)。 我在x轴上使用的标签每个都是几个字,因为这使得所有的标签重叠,我需要跨越这些标签。 (如果我可以用换行符replace每个标签中的所有空格,那就没问题了。) 我最初试图通过在标签的<text>元素上用空格replace空格( )和设置xml:space="preserve" 。 不幸的是,事实certificate,SVG不尊重这个属性。 接下来,我尝试将每个单词包装在一个<tspan> ,以便以后可以使用。 我通过这个函数传递了每个标签: function (text) { return '<tspan>' + text.replace(/ /g, '</tspan><tspan>') + '</tspan>'; } 但是这只是将文字<tspan>放入输出中。 如何将我的文本标签包裹在tspan (或者做其他事情),以便我的标签不重叠?
我的目标是用d3将图像添加到现有的圆中。 圆形将呈现并与mouseover方法交互,但只有当我使用“填充”,“颜色”,而不是像.append(“图像”)更复杂的东西。 g.append("circle") .attr("class", "logo") .attr("cx", 700) .attr("cy", 300) .attr("r", 10) .attr("fill", "black") // this code works OK .attr("stroke", "white") // displays small black dot .attr("stroke-width", 0.25) .on("mouseover", function(){ // when I use .style("fill", "red") here, it works d3.select(this) .append("svg:image") .attr("xlink:href", "/assetshttp://img.dovov.comlogo.jpeg") .attr("cx", 700) .attr("cy", 300) .attr("height", 10) .attr("width", 10); }); 鼠标hover后,图像不显示。 使用Ruby on Rails应用程序,我的图像“logo.jpeg”存储在assets […]
我一直在试图把一个漂亮的D3图表例子( https://jsfiddle.net/thudfactor/HdwTH/ )转换成新的D3 v4的Angular2组件。 但是我做了一个“无法读取属性文本的空值”exception与下面的代码: var textLabels = labelGroups.append("text").attr({ x: function (d, i) { var centroid = pied_arc.centroid(d); var midAngle = Math.atan2(centroid[1], centroid[0]); var x = Math.cos(midAngle) * cDim.labelRadius; var sign = (x > 0) ? 1 : -1 var labelX = x + (5 * sign) return labelX; }, y: function (d, i) { […]
我是一个完整的新手在d3.js或一般的java。 我正在使用来自http://bl.ocks.org/1093025的缩进树例子。 我花了两个小时才把这个工作在我的本地计算机上,所以应该给你一个我的技能水平的概念。 我打开flare.json文件,并开始搞乱它,并能成功地操作它。 看起来像这样 { "name": "Test D3", "children": [ { "name": "News", "children": [ { "name": "CNN", "size": 1000 }, { "name": "BBC", "size": 3812 } ] }, { "name": "Blogs", "children": [ { "name": "Engaget", "size": 3938 } ] }, { "name": "Search", "children": [ { "name": "Google", "size": 3938 }, { […]
首先,我使用d3.js在数组中显示不同大小的圆。 在老鼠身上,我希望圈子被挖出变大,我可以做到,但我不知道如何把它带到前面。 目前,一旦渲染,它隐藏在其他多个圈子之后。 我该如何解决这个问题? 这是一个代码示例: .on("mouseover", function() { d3.select(this).attr("r", function(d) { return 100; }) }) 我尝试使用sorting和顺序的方法,但他们没有工作。 我很确定我没有做正确的。 有什么想法吗?
我想通过使用下面的代码获取全局variables中的数据: var data; d3.json ( "file.json" , function(json) { data = json; console.log(data); //defined }); console.log(data); //undefined 但问题是,我只是在d3.json函数中定义的数据variables,但它是未定义的。 我怎么能解决这个问题? 谢谢
我正在研究D3中的一个有向图。 我想通过将所有其他节点和链接设置为较低的不透明度来突出显示mouseover'd节点,其链接及其子节点。 在这个例子中,我可以淡出所有的链接和节点,然后淡入连接的链接,但到目前为止,我还没有能够优雅地淡入淡出连接的节点是当前鼠标hover节点的子节点。 这是代码中的关键function: function fade(opacity) { return function(d, i) { //fade all elements svg.selectAll("circle, line").style("opacity", opacity); var associated_links = svg.selectAll("line").filter(function(d) { return d.source.index == i || d.target.index == i; }).each(function(dLink, iLink) { //unfade links and nodes connected to the current node d3.select(this).style("opacity", 1); //THE FOLLOWING CAUSES: Uncaught TypeError: Cannot call method 'setProperty' of undefined […]
假设我有一个直方图脚本来build立一个960 500 svggraphics。 如何使这个响应如此重新调整graphics的宽度和高度是dynamic的? <script> var n = 10000, // number of trials m = 10, // number of random variables data = []; // Generate an Irwin-Hall distribution. for (var i = 0; i < n; i++) { for (var s = 0, j = 0; j < m; j++) { s += Math.random(); […]
目前在D3中,如果你有一个你要绘制的geoJSON对象,你必须对它进行缩放和翻译,以便达到想要的大小并将其翻译为中心。 这是一个非常乏味的尝试和错误的任务,我想知道是否有人知道更好的方式来获得这些价值? 所以,例如,如果我有这个代码 var path, vis, xy; xy = d3.geo.mercator().scale(8500).translate([0, -1200]); path = d3.geo.path().projection(xy); vis = d3.select("#vis").append("svg:svg").attr("width", 960).attr("height", 600); d3.json("../../data/ireland2.geojson", function(json) { return vis.append("svg:g") .attr("class", "tracts") .selectAll("path") .data(json.features).enter() .append("svg:path") .attr("d", path) .attr("fill", "#85C3C0") .attr("stroke", "#222"); }); 我怎么能得到.scale(8500)和.translate([0,-1200])而不是一点一点的?