我有一个堆叠的条形图。我想画一条线,就像对堆叠的条形图的几个条形进行分组一样。
一些人请帮助绘制这些线使用D3。
JS:
var width = 750, height = 500; var x = d3.scale.ordinal() .rangeRoundBands([0, width], .1); var y = d3.scale.linear() .rangeRound([height, 0]); var color = d3.scale.ordinal() .range(["#D70B16", "#154CEF", "#1A8A55"]); var xAxis = d3.svg.axis() .scale(x) .orient("bottom"); var yAxis = d3.svg.axis() .scale(y) .orient("left") .tickFormat(d3.format(".2s")); var tip = d3.tip() .attr('class', 'd3-tip') .offset([-10, 0]) .html(function(d) { return "Value: " + (d.y1 - d.y0) + ""; }) var svgContainer = d3.select("body") .append("svg") .attr("width", width) .attr("height", height) .append("g") .attr("transform", "translate(" + 30 + "," + 30 + ")"); d3.csv("data.csv", function(error, data) { color.domain(d3.keys(data[0]).filter(function(key) { return key !== "circle"; })); data.forEach(function(d) { var y0 = 0; d.hours = color.domain().map(function(name) { return {name: name, y0: y0, y1: y0 += +d[name]}; }); d3.select('body').append('pre') .text(JSON.stringify(d.hours, null, ' ')); d.total = d.hours[d.hours.length - 1].y1; }); x.domain(data.map(function(d) {return d.circle;})); y.domain([0, d3.max(data, function(d) {return d.total;})]) svgContainer.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") .call(xAxis); svgContainer.append("g") .attr("class", "y axis") .call(yAxis) .append("text") .attr("transform", "rotate(-90)") .attr("y", 6) .attr("dy", ".71em") .style("text-anchor", "end") .text("Login Hours"); var circle = svgContainer.selectAll(".circle") .data(data) .enter().append("g") .attr("class", "g") .attr("transform", function(d) { return "translate(" + x(d.circle) + ",0)"; }); circle.selectAll("rect") .data(function(d) { return d.hours; }) .enter() .append("rect") .attr("width", x.rangeBand()) .attr("y", function(d) { return y(d.y1); }) .attr("height", function(d) { return y(d.y0) - y(d.y1); }) .on("mouseover", tip.show) .on("mouseout", tip.hide) .style("fill", function(d) { return color(d.name); }); circle.selectAll("text") .data(function(d) { return d.hours; }) .enter() .append("text") .attr("x", 75) .attr("y", function(d, i) { return y(d.y1) ; }) .style("text-anchor", "middle") .text("test") })
如何确定这些值(和条形图)取决于如何识别它们。在这种情况下,您实际上不需要获取rect
项,因为底层数据允许您访问所需的所有内容。
例如,若要获取第一列中第二条的Y
坐标,可以使用以下代码:
var yCoord = y(data[0].hours[1].y1);
#include <stdio.h> int func1(int a) { return 2 * a; } int func2(int a) { int c = 0; c = 2 * func1(a); return c; } int func3(int a) { int c = 0; c = 2
问题内容: 有什么方法可以检查PNG图像的选定点(x,y)是否透明? 问题答案: 基于Jeff的答案,您的第一步将是创建PNG的画布表示。以下内容将创建一个屏幕外画布,该画布的宽度和高度与您的图像相同,并在其上绘制图像。 之后,当用户单击时,使用和获取位置。然后可以用来获取像素: 因为您只抓取一个像素,所以pixelData是一个包含四个像素的R,G,B和A值的四项数组。对于Alpha,任何小于2
我有一张以色列地图。 我需要创建一个获得两个双参数(经度和纬度)的函数,该函数应该在地图图像中的那个区域上画一个小圆圈。 我有以下关于地图的信息: null 截图: https://gyazo.com/5a19dece37ebace496c6b8d68eb9ec3c
我想知道这是否可以在Datadog中实现。我有一个在1个度量-现在数据通过多个标记发布到Datadog,例如,,可能还有10个不同的标签。 我试图在仪表板中创建Datadog图表,它将在堆叠条形图中显示实体计数的前5个标记。我知道添加更多查询的选项,但由于我不确定将来会有哪些实体可用,我希望datadog总是在仪表板中动态显示前5个实体(而不是在查询中指定要显示的标记)。这就是我目前拥有的(它完成
注意:在 Photoshop CS6 中,3D 功能是 Photoshop Extended 的一部分。Photoshop Extended 中的所有功能是 Photoshop 的一部分。Photoshop 不提供单独的 Extended 版本。 关于图像堆栈 图像堆栈将一组参考帧相似、但品质或内容不同的图像组合在一起。将多个图像组合到堆栈中之后,您就可以对它们进行处理,生成一个复合视图,消除不需