- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要绘制气泡图,其中每个气泡都是一个 donut chart ,如下图 d3 版本 3 中所示。我能够取得一些成就,但不明白如何水平分布圆圈,因为我的小部件将是长方形。
此外,如何制作下图中的 donut 气泡。任何帮助,将不胜感激。谢谢。
let colorCircles = {
'a': '#59bcf9',
'b': '#faabab',
'd': '#ffde85'
};
let tooltip = d3.select("body")
.append("div")
.attr("class", "tooltip-inner")
.style("position", "absolute")
.style("min-width", "12rem")
.style("visibility", "hidden")
.style("color", "#627386")
.style("padding", "15px")
.style("stroke", '#b8bfca')
.style("fill", "none")
.style("stroke-width", 1)
.style("background-color", "#fff")
.style("border-radius", "6px")
.style("text-align", "center")
.text("");
let bubble = d3.layout.pack()
.sort(null)
.size([width, diameter])
.padding(15)
.value(function(d) {
return d[columnForRadius];
});
let svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", diameter)
.attr("class", "bubble");
let nodes = bubble.nodes({
children: dataset
}).filter(function(d) {
return !d.children;
});
let circles = svg.selectAll("circle")
.data(nodes)
.enter()
.append("circle")
.attr("r", function(d) {
return d.r;
})
.attr("cx", function(d) {
return d.x;
})
.attr("cy", function(d) {
return d.y - 20;
})
.style("fill", function(d) {
return colorCircles[d[columnForColors]]
})
.on("mouseover", function(d) {
tooltip.style("visibility", "visible");
tooltip.html('<p>' + d[columnForColors] + ": " + d[columnForText] + "</p><div class='font-bold displayInlineBlock'> $" + d[columnForRadius] + '</div>');
})
.on("mousemove", function() {
return tooltip.style("top", (d3.event.offsetY - 10) + "px").style("left", (d3.event.offsetX + 10) + "px");
})
// .on("mouseout", function() {
// return tooltip.style("visibility", "hidden");
// })
.attr("class", "node");
circles.transition()
.duration(1000)
.attr("r", function(d) {
return d.r;
})
.each('end', function() {
display_text();
});
function display_text() {
let text = svg
.selectAll(".text")
.data(nodes, function(d) {
return d[columnForText];
});
text.enter().append("text")
.attr("class", "graphText")
.attr("x", function(d) {
return d.x;
})
.attr("y", function(d) {
return d.y - 20;
})
.attr("dy", ".2em")
.attr("fill", "white")
.attr("font-size", function(d) {
return d.r / 5;
})
.attr("text-anchor", "middle")
.text(function(d) {
console.log(d)
return d[columnForText].substring(0, d.r / 3);
});
text.enter().append("text")
.attr("class", "graphText")
.attr("x", function(d) {
return d.x;
})
.attr("y", function(d) {
return d.y - 20;
})
.attr("dy", "1.3em")
.style("text-anchor", "middle")
.text(function(d) {
return '$' + d[columnForRadius];
})
.attr("font-size", function(d) {
return d.r / 5;
})
.attr("fill", "white");
}
function hide_text() {
let text = svg.selectAll(".text").remove();
}
d3.select(self.frameElement)
.style("height", diameter + "px");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>
<script type="text/javascript">
var dataset = [
{ "Name": "Olives", "Count": 4319, "Category": "d" },
{ "Name": "Tea", "Count": 4159, "Category": "d" },
{ "Name": "Boiled Potatoes", "Count": 2074, "Category": "a" },
{ "Name": "Milk", "Count": 1894, "Category": "a" },
{ "Name": "Chicken Salad", "Count": 1809, "Category": "a" },
{ "Name": "Lettuce Salad", "Count": 1566, "Category": "a" },
{ "Name": "Lobster Salad", "Count": 1511, "Category": "a" },
{ "Name": "Chocolate", "Count": 1489, "Category": "b" }
];
var width = 300, diameter = 300;
var columnForText = 'Name',
columnForColors = 'Category',
columnForRadius = "Count";
</script>
最佳答案
这是我的 fiddle :http://jsfiddle.net/71s86zL7/
我创建了一个复合气泡饼图,并在饼图中指定了内半径。
var arc = d3.svg.arc()
.innerRadius(radius)
.outerRadius(radius);
.attr("d", function(d) {
arc.innerRadius(d.r+5);
arc.outerRadius(d.r);
return arc(d);
})
请让我知道这个问题是否有任何替代解决方案。
关于javascript - D3.js 版本 3 中的 donut 气泡图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983701/
我一直致力于使用 highcharts 复制此图表设计。 我一直在玩 jsfiddle 试图获得想要的结果,但问题是我无法设法获得百分比未填充的白色区域,也无法获得条形之间的间隙。 使用 highch
我正在使用 Steema.TeeChart for .Net(用 C# 编码) 有人知道如何在圆环图的饼图内做标签吗? 它应该看起来像: http://www.steema.com/uploads/g
当点击内部 donut 时,我试图将内部和其他 donut 滑出。在下面的链接中,只切掉了内部 donut 。 http://jsfiddle.net/bvL0r6tq/ 我试图通过点选择选择外部切片
我正在尝试将内部 donut 名称设置为 highchart 中外部 donut 工具提示的标题。任何人都可以帮我解决这个问题。在示例中,内部饼图上显示的链接镶边应显示为外部 donut 工具提示中所
我正在使用 jqplot 设置一个具有两个级别的圆环图,但有两个问题,我偷偷怀疑它们是相关的。 当我将设置保留为默认设置时,它会正确显示,但一旦我开始设置直径、内径等。尺寸适用于内部和外部图表,并且它
我想制作一个 donut 风格的饼图,在特定的 donut 扇区带有弯曲的标签,就像这个: 在此模型中,用户单击了“Raphael.js”扇区。现在对于单击的扇区,还应该有一个事件处理程序,负责在饼图
我是编程新手,如果问题很愚蠢,我很抱歉。我正在用 chart.js 做一些图形. 我已经成功地通过 onclick 事件在另一个内部创建了一个 donut ,我遇到的问题是它为每次点击生成一个 don
您好,我想实现一个像这样的 donut 菜单 http://dribbble.com/shots/610433-Wheel-Nav我知道有一种在 css3 中制作 donut 的简单方法。 .doug
我创建了一个带有 highcharts 的饼图,效果很好。现在我想做的是当我悬停一个区域时,我想突出显示它的 parent 和 child ,并在工具提示中显示他们的所有数据。 这是我的图表: htt
我正在尝试增加圆环图的内半径,并且还能够在圆环图内写入。 $scope.donut = new RGraph.Pie('myDonut', $scope.donutData) .
我有一个简单的 SVG donut ,其中使用 stroke-dashoffset="xx"放置了 5 个相等的切片。 donut 本身看起来不错,但是当我尝试为每个切片添加一些悬停更改时,例如,简单
板级: import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import
请帮我修改代码。我使用 D3 v5.7.0 并尝试绘制 donut 。 现场演示 is here. 我的代码在这里: const dataset = [ [ 5, 3 ] ]; const s
我使用 highchart 库开发了一个圆环图。我需要在 donut 的内部添加一个标签。 预期结果: JS: $(function () { $('#container8').highcha
我在 Highcharts 中对 donut 中的馅饼很感兴趣,但我似乎无法显示图例或共享工具提示。工作正常with non-shared tooltips : tooltip: {
我创建了一个圆环图,如下所示: 我生成的 donut chart 应采用以下方式: 我的问题是,我怎样才能用图像实现线条(它们在第二个屏幕截图中四舍五入) 供引用,这是我编写的代码: public c
我有一个 2D map ,它在边缘处环绕。因此,如果您离开右边缘,您将重新出现在 map 的左侧。其他三个边也是如此。 这是我用来在点范围内查找元素的 KDTree 的可继承问题。通常,您会检查超球体
我正在使用 Plotly 来绘制 Donut Plot。下面你可以看到我的数据 df1% plot_ly(labels = ~manuf, values = ~count) fig % add_pie
我正在尝试为圆圈内的点生成一个分布,其中有更多的点朝向中心,但对于 donut 形状 我可以制作一个均匀分布的 donut 形状 (1),或者一个有更多点朝向中心的圆圈 (2),但不能制作一个有这么多
http://www.mediafire.com/view/z8ad4pedqr7twbl/donut.png 我想像那个图像一样绘制这个 donut 。我已经使用 raphaeljs 来绘制它。但是
我是一名优秀的程序员,十分优秀!