作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用带有填充的 d3 js 做了一个圆圈。现在,我希望这张图表从 -90 角度开始
我也附上了我的代码和输出。我还附上了我的预期输出。
你可以在这里检查。
<style type="text/css">
body {
font-family: sans-serif;
margin-top: 25px;
font-size: 18px;
}
.monthArc {
fill: #cc3333;
}
.monthText {
fill: #FFF;
font-size: 34px;
font-weight: 500;
}
</style>
<div id="chart"></div>
<script type="text/javascript">
var screenWidth = window.innerWidth;
// var color = d3.scale.category20c();
var margin = {
left: 25,
top: 25,
right: 25,
bottom: 25
},
width = Math.min(screenWidth, 600) - margin.left - margin.right,
height = Math.min(screenWidth, 600) - margin.top - margin.bottom;
//The start date number and end date number of the months in a year
var month_space = "\x09\x20\u00A0 ";
var monthData = [{
month: "T"+month_space+"E"+month_space+"X"+month_space+"T"
}, {
month: "T"+month_space+"E"+month_space+"X"+month_space+"T"+month_space+"1"
}
];
var svg = d3.select("#chart").append("svg")
.attr("width", (width + margin.left + margin.right))
.attr("height", (height + margin.top + margin.bottom))
.attr("class", "wrappersvg")
.append("g").attr("class", "wrapper")
.attr("transform", "translate(" + (width / 2 + margin.left) + "," + (height / 2 + margin.top) + ")");
//Creates a function that makes SVG paths in the shape of arcs with the specified inner and outer radius
var arc = d3.svg.arc()
.innerRadius(width * 0.9 / 2)
.outerRadius(width * 0.9 / 2 + 50);
//Creates function that will turn the month data into start and end angles
var pie = d3.layout.pie()
.value(function(d) {
return 180;
})
.padAngle(.01)
.sort(null);
//Draw the arcs themselves
svg.selectAll(".monthArc")
.data(pie(monthData))
.enter().append("path")
.attr("class", "monthArc")
.attr("id", function(d, i) {
return "monthArc_" + i;
})
.attr("d", arc);
//Append the month names within the arcs
svg.selectAll(".monthText")
.data(monthData)
.enter().append("text")
.attr("class", "monthText")
.attr("x", 0) //Move the text from the start angle of the arc
.attr("dy", 36) //Move the text down
.append("textPath")
.attr("text-anchor", "middle")
.attr("startOffset",function(d,i){return "26%";})
.attr("xlink:href", function(d, i) {
return "#monthArc_" + i;
})
.text(function(d) {
return d.month;
});
</script>
最佳答案
对于两者 startAngle
和 endAngle
,您必须加上圆周的四分之一,即 Math.PI/2
:
.startAngle(function(d) { return d.startAngle + Math.PI/2; })
.endAngle(function(d) { return d.endAngle + Math.PI/2; });
var screenWidth = window.innerWidth;
// var color = d3.scale.category20c();
var margin = {
left: 25,
top: 25,
right: 25,
bottom: 25
},
width = Math.min(screenWidth, 600) - margin.left - margin.right,
height = Math.min(screenWidth, 600) - margin.top - margin.bottom;
//The start date number and end date number of the months in a year
var month_space = "\x09\x20\u00A0 ";
var monthData = [{
month: "T"+month_space+"E"+month_space+"X"+month_space+"T"
}, {
month: "T"+month_space+"E"+month_space+"X"+month_space+"T"+month_space+"1"
}
];
var svg = d3.select("#chart").append("svg")
.attr("width", (width + margin.left + margin.right))
.attr("height", (height + margin.top + margin.bottom))
.attr("class", "wrappersvg")
.append("g").attr("class", "wrapper")
.attr("transform", "translate(" + (width / 2 + margin.left) + "," + (height / 2 + margin.top) + ")");
//Creates a function that makes SVG paths in the shape of arcs with the specified inner and outer radius
var arc = d3.svg.arc()
.innerRadius(width * 0.9 / 2)
.outerRadius(width * 0.9 / 2 + 50)
.startAngle(function(d) { return d.startAngle + Math.PI/2; })
.endAngle(function(d) { return d.endAngle + Math.PI/2; });
//Creates function that will turn the month data into start and end angles
var pie = d3.layout.pie()
.padAngle(0.02)
.value(function(d) {
return 180;
}).sort(null);
//Draw the arcs themselves
svg.selectAll(".monthArc")
.data(pie(monthData))
.enter().append("path")
.attr("class", "monthArc")
.attr("id", function(d, i) {
return "monthArc_" + i;
})
.attr("d", arc);
//Append the month names within the arcs
svg.selectAll(".monthText")
.data(monthData)
.enter().append("text")
.attr("class", "monthText")
.attr("x", 0) //Move the text from the start angle of the arc
.attr("dy", 36) //Move the text down
.append("textPath")
.attr("text-anchor", "middle")
.attr("startOffset",function(d,i){return "26%";})
.attr("xlink:href", function(d, i) {
return "#monthArc_" + i;
})
.text(function(d) {
return d.month;
});
body {
font-family: sans-serif;
margin-top: 25px;
font-size: 18px;
}
.monthArc {
fill: #cc3333;
}
.monthText {
fill: #FFF;
font-size: 34px;
font-weight: 500;
}
<script src="https://d3js.org/d3.v3.min.js"></script>
<div id="chart"></div>
关于d3.js - 如何旋转 d3 图表以及如何从 -90 度角开始饼图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973776/
有人可以帮我理解为什么我的饼图百分比计算不正确吗?看截图: 根据我的计算,如 RHS 上所示,支出百分比应为 24.73%。传递给 Highcharts 的值如下:- 花费:204827099.36-
我正在制作圆环饼图。 我设置数据的颜色并获取钻取(它是保存外部切片的数据和配置的对象)切片的颜色为同一组颜色。我想设置要在向下钻取对象中使用的不同颜色数组。请参阅附图(外层切片有两种颜色:橙色和透明)
我是一名优秀的程序员,十分优秀!