Javascript 只有一部分JSON数据的D3饼图
所以我对D3.js很陌生,所以我想寻求一些帮助。我想用JSON响应的第一部分制作一个饼图。例如,以下是JSON的外观:Javascript 只有一部分JSON数据的D3饼图,javascript,json,d3.js,charts,pie-chart,Javascript,Json,D3.js,Charts,Pie Chart,所以我对D3.js很陌生,所以我想寻求一些帮助。我想用JSON响应的第一部分制作一个饼图。例如,以下是JSON的外观: [ { "Count": 4224, "DNS": 0, "Connect": 181, "SSL": 218, "Send": 65.7, "Server Busy": 1459, "Receive": 3, "RTT": 1926.7
[
{
"Count": 4224,
"DNS": 0,
"Connect": 181,
"SSL": 218,
"Send": 65.7,
"Server Busy": 1459,
"Receive": 3,
"RTT": 1926.7
},
{
"Count": 5268,
"DNS": 0,
"Connect": 153.3,
"SSL": 218,
"Send": 54,
"Server Busy": 2211,
"Receive": 1,
"RTT": 2637.3
},
{
"Count": 5567,
"DNS": 0,
"Connect": 103,
"SSL": 190,
"Send": 53,
"Server Busy": 2100,
"Receive": 2,
"RTT": 2448
}
]
因此,这里发生的是RTT是总数(整个饼图),然后接收、服务器忙、发送、SSL、连接和DNS是组成整体的各个部分(这些加起来等于RTT)。我在网上找到的所有例子都不是这样做的,所以我想知道这是否可能,如果可能,我该怎么做
我已经设置了基本设置(它只使用所有3个RTT),但我不确定如何以我想要的方式使用数据。感谢您的帮助。谢谢大家!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>D3 Graphic</title>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<style>
body {
font-family: "Exo 2", "Helvetica Neue", Helvetica, sans-serif;
font-weight: 300;
font-size: 1.2em;
line-height: 1.2em;
background: #FDF6E3;
color: #475B62;
}
strong {
font-weight: 600;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Roboto Slab', "Helvetica Neue", Helvetica, sans-serif;
font-weight: 700;
color: #CB4B19;
font-size: 1.75em;
margin-bottom: .4em;
}
p {
margin-bottom: .5em;
}
.container {
width: 80%;
max-width: 1200px;
margin: 0 auto;
margin-top:10px;
}
@media all and (max-width: 500px) {
h2 {
padding-left: 10px;
text-align: center;
}
.container {
width: 100%;
}
}
#graphic {
margin: 0 auto;
}
</style>
</head>
<body>
<div class="container">
<h2>D3 Graphic</h2>
<div id="chart"></div>
</div>
<script>
var width = 400,
height = 400,
radius = 200
colors = d3.scale.ordinal()
.range(['#33CCCC','#6600CC','#0066FF']);
var piedata = [
{
"Count": 4224,
"DNS": 0,
"Connect": 181,
"SSL": 218,
"Send": 65.7,
"Server Busy": 1459,
"Receive": 3,
"RTT": 1926.7
},
{
"Count": 5268,
"DNS": 0,
"Connect": 153.3,
"SSL": 218,
"Send": 54,
"Server Busy": 2211,
"Receive": 1,
"RTT": 2637.3
},
{
"Count": 5567,
"DNS": 0,
"Connect": 103,
"SSL": 190,
"Send": 53,
"Server Busy": 2100,
"Receive": 2,
"RTT": 2448
}
]
var pie = d3.layout.pie()
.value(function(d) {
return d.RTT;
})
var arc = d3.svg.arc()
.outerRadius(radius)
var myChart = d3.select('#chart').append('svg')
.attr('width', width)
.attr('height', height)
.append('g')
.attr('transform', 'translate('+(width-radius)+','+(height-radius)+')')
.selectAll('path').data(pie(piedata))
.enter().append('g')
.attr('class', 'slice')
var slices = d3.selectAll('g.slice')
.append('path')
.attr('fill', function(d, i) {
return colors(i);
})
.attr('d', arc)
var text = d3.selectAll('g.slice')
.append('text')
.text(function(d, i) {
return d.data.RTT;
})
.attr('text-anchor', 'middle')
.attr('fill', 'white')
.attr('transform', function(d) {
d.innerRadius = 0;
d.outerRadius = radius;
return 'translate('+ arc.centroid(d)+')'
})
</script>
</body>
</html>
D3图形
身体{
字体系列:“Exo 2”,“Helvetica Neue”,Helvetica,无衬线;
字体大小:300;
字体大小:1.2米;
线高:1.2米;
背景:#FDF6E3;
颜色:#475B62;
}
强壮的{
字号:600;
}
h1、h2、h3、h4、h5、h6{
字体系列:“Roboto Slab”,“Helvetica Neue”,Helvetica,无衬线;
字号:700;
颜色:#CB4B19;
字号:1.75em;
边缘底部:.4em;
}
p{
边缘底部:.5em;
}
.集装箱{
宽度:80%;
最大宽度:1200px;
保证金:0自动;
边缘顶部:10px;
}
@全部和全部介质(最大宽度:500px){
氢{
左侧填充:10px;
文本对齐:居中;
}
.集装箱{
宽度:100%;
}
}
#图形{
保证金:0自动;
}
D3图形
可变宽度=400,
高度=400,
半径=200
颜色=d3.scale.ordinal()
.范围(['33CCCC'、'6600CC'、'0066FF']);
变量数据=[
{
“计数”:4224,
“DNS”:0,
“连接”:181,
“SSL”:218,
“发送”:65.7,
“服务器忙”:1459,
“接收”:3,
“RTT”:1926.7
},
{
“计数”:5268,
“DNS”:0,
“连接”:153.3,
“SSL”:218,
“发送”:54,
“服务器忙”:2211,
“接收”:1,
“RTT”:2637.3
},
{
“计数”:5567,
“DNS”:0,
“连接”:103,
“SSL”:190,
“发送”:53,
“服务器忙”:2100,
“接收”:2,
“RTT”:2448
}
]
var pie=d3.layout.pie()
.价值(功能(d){
返回d.RTT;
})
var arc=d3.svg.arc()
.外部(半径)
var myChart=d3.select(“#chart”).append('svg'))
.attr('width',width)
.attr('height',height)
.append('g')
.attr('transform','translate(+(宽度-半径)+','+(高度-半径)+'))
.selectAll('path').data(饼图(饼图数据))
.enter().append('g')
.attr('class','slice')
var slice=d3.selectAll('g.slice')
.append('路径')
.attr('fill',函数(d,i){
返回颜色(i);
})
.attr('d',弧)
var text=d3.selectAll('g.slice')
.append('文本')
.文本(功能(d,i){
返回d.data.RTT;
})
.attr('text-anchor','middle')
.attr('填充','白色')
.attr('transform',函数(d){
d、 内半径=0;
d、 外层=半径;
返回“平移('+弧形心(d)+')”
})
我试图为它设置一个JSFIDLE(),但它不起作用,因为我不确定将D3 src放在我的代码块顶部的什么位置。看这个哦,这是用来修复FIDLE的@saikiran.vsk!!现在你知道如何解决这个问题了吗?