javascript - 即使使用preserveAspectRatio后,D3直方图也没有响应

标签 javascript jquery d3.js

我正在制作高度相等的 D3 直方图,但即使在使用“viewBox”和“preserveaspectRatio”属性后,图表也没有响应。这是我正在使用的代码

                var w = 800;
                var h = 80;
                var barPadding = 1;
                var hello = 10;
                var dataset = [ hello, 10, 13, 19, 21, 25, 22, 18, 15, 13,
                                11, 12, 15, 20 ];

                var dataset2 = [ "hey", "you", "know", "that", "you", "are", "an", 18, 15, 13,
                                11, 12, 15, 20 ];
                //Create SVG element
                var svg = d3.select("#chart")
                            .append("svg")
                            .attr("width", w)
                            .attr("height", h)
                            .attr("viewBox","0 0 800 80")
                            .attr("preserveAspectRatio","xMinYMin meet")
                            .append("g")
                            .attr("transform", "translate(1,1)");

                svg.selectAll("rect")
                   .data(dataset)
                   .enter()
                   .append("rect")
                   .attr("x", function(d, i) {
                        return i * (w / dataset.length);
                   })
                   .attr("y", 0)
                   .attr("width", 50)
                   .attr("height", 50)
                   .attr("rx", 5)
                .attr("ry", 5)
                   .attr("fill", function(d) {
                            return "rgb(" + (d * 15) + ", " + (d * 5) + ", " + (d * 5) + ")";
                    })
                   .style("opacity", function(d){
                    return 0.05 * (d);
                   });

                svg.selectAll("text")
                    .data(dataset2)
                    .enter()
                    .append("text")
                    .text(function(d) {   return d;  })
                     .attr("text-anchor", "middle")
                   .attr("x", function(d, i) {
                        return i * (w / dataset2.length) + (w / dataset2.length - barPadding) / 2;
                   })
                   .attr("y", 18)
                   .attr("font-family", "sans-serif")
                   .attr("font-size", "8px")
                   .attr("fill", "black");

上述代码的工作 fiddle 链接是 here https://jsfiddle.net/hawkeye15/m22pyyjL/

最佳答案

删除

 .attr("width",w)
 .attr("height",h)

它会工作得很好。下面是 fiddle 链接

https://jsfiddle.net/m22pyyjL/2/

关于javascript - 即使使用preserveAspectRatio后,D3直方图也没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463085/

相关文章:

javascript - PHP/JS 无限滚动一次滚动加载 MySQL 中的所有数据

javascript - 如何正确地网格化/定位这些按钮 - CSS

javascript - D3.js 中 json 文件的堆积面积图

javascript - 为什么这个简单的 attrTween 示例不起作用?

javascript - d3.js 超出最大调用堆栈大小错误

javascript - 如何使用 Laravel 发送跨域 Ajax POST

javascript - Electron webview 仅预加载文件 ://protocol is supported when using create-react-app base

javascript - 在下载之前捕获 Highcharts 客户端导出响应

javascript - 如何使所有 <a> 具有相同的目标 ="_self"

javascript - Lucee/AJAX/CFARGUMENT 失败