【发布时间】:2017-05-25 08:12:08
【问题描述】:
我正在使用 d3 库学习图表,我不是为网页开发,而是在 Filemaker 数据库中使用网络查看器。我有以下代码,它使用 d3.min.js 库绘制饼图。饼图使用显示的数据数组绘制得很好,但是我试图使用也显示的对象数组来绘制饼图。我似乎无法为一组对象数据集正确格式化。我需要更改哪些格式才能正确格式化?
其次,我应该在哪里添加 onclick 属性,
.attr("onclick", function(d, i){
return "location.href='" + script + "¶m=" + d.value[0] + "'";
});
所以我可以在单击饼图时运行 Filemaker 脚本?这是获取 x 对象值的正确位置和语法吗,目前我在 var arcs 下拥有它?
<html lang="en">
<head>
<meta charset="utf-8">
<title>D3: Pie layout, pie chart</title>
<script type="text/javascript" src="d3.js"></script>
<style type="text/css">
body {
background-color: white; //color of chart background
}
svg {
background-color: white; //color of smaller rectangle behind pit
}
text {
font-family: sans-serif;
font-size: 12px;
fill: white;
}
</style>
</head>
<body>
<script type="text/javascript">
var script = encodeURI('fmp://$/{{FileName}}?script=BarClick');
var w = 300;
var h = 300;
var dataset = [ {x: 1,y: 5}, {x: 2,y: 10}, {x: 3,y: 20}, {x: 4,y: 45}, {x: 5,y: 6}, {x: 6,y: 25} ];
//var dataset = [ 5, 10, 20, 45, 6, 25 ];
var outerRadius = w / 2;
var innerRadius = 0;
var arc = d3.svg.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius);
var pie = d3.layout.pie();
var color = d3.scale.category20();
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var arcs = svg.selectAll("g.arc")
.data(pie(dataset))
.enter()
.append("g")
.attr("class", "arc")
.attr("transform", "translate(" + outerRadius + "," + outerRadius + ")")
.attr("onclick", function(d, i){
return "location.href='" + script + "¶m=" + d.value[0] + "'";
});
arcs.append("path")
.attr("fill", function(d, i) {
return color(i);
})
.attr("d", arc);
arcs.append("text")
.attr("transform", function(d) {
return "translate(" + arc.centroid(d) + ")";
})
.attr("text-anchor", "middle")
.text(function(d) {
return d.value;
});
</script>
</body>
</html>
【问题讨论】:
标签: d3.js