【发布时间】:2020-01-07 16:21:44
【问题描述】:
对这一切都很陌生;我坚持实现 Highcharts 饼图的 jQuery。每个条形图都使用单选按钮输入构建,并且每个输入都有相关的浮点值。然后将这些值相加以构建条形图。我正在尝试使用从三个单独的条形图中获取的总和来构建它。任何帮助将不胜感激。这是我敲出来的一个jsfiddle,请将运行窗口扩大到最大
HTML
<div class="" id="meansTransport" >
<ul>
<p id="boxTitle">Means of transport</p>
<input type="radio" id="question-means-A" name="test" value="0.0" />
<label for="question-means-A"> I almost always go by public transport, cycle or walk</label><br>
<input type="radio" id="question-means-B" name="test" value="1.4" />
<label for="question-means-B"> I use the car and public transport about the same amount</label><br>
<input type="radio" id="question-means-C" name="test" value="1.8" />
<label for="question-means-C"> I almost always drive by car</label><br>
</ul>
</div>
<div class="col-lg-5 col-md-5 col-sm-5" id="graphMobility"></div>
Highcharts/(3 个中的第一个)条形图
总数将从三个条形图中的每一个中获取,例如。 '移动性总'
var graphMobility = Highcharts.chart('graphMobility', {
chart: {
type: 'column',
backgroundColor: "#fafafa",
},
series: [{
name: 'Per capita CO2 emissions',
color: 'rgba(165,170,217,1)',
data: [2.5, 3.1, 2.2, 1.6],
pointPadding: -0.2,
pointPlacement: 0.0
}, {
name: 'Personal CO2 footprint',
opacity: 0.9,
borderWidth: 3,
borderColor:'white',
dashStyle: 'ShortDot',
data: [0.0],
pointPadding: -0.2,
pointPlacement: 0.0
}]
});
var sum = 0;
$("#mobilityBox input:radio").click(function() {
sum = 0.8;
$("#mobilityBox input:radio:checked").each(function(idx, elm) {
sum += parseFloat(elm.value, 10);
});
var mobilityTotal = sum;
graphMobility.series[1].setData([sum], true);
});
});
Highcharts/饼图
这是条形图总计应该添加的地方,并适应饼图。我一直在阅读潜在的解决方案,但似乎根本没有任何问题。这就是我所拥有的,仍然绝对有效。
var circlePie = Highcharts.chart('circlePie', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: 0,
plotShadow: false,
backgroundColor: "#fafafa",
},
title: {
text: 'Household: 3t <br> Total: 11t ',
align: 'center',
verticalAlign: 'middle',
y: 35,
style: {
fontSize: '3.1vh',
color: '#404040',
fontWeight: '600',
lineHeight: '45',
fontFamily: 'Verdana'
}
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>',
},
plotOptions: {
pie: {
dataLabels: {
enabled: false,
distance: 0,
style: {
fontWeight: 'bold',
color: 'white',
}
},
startAngle: -35,
endAngle: -36,
center: ['50%', '50%'],
size: '100%'
}
},
series: [{
type: 'pie',
name: 'Emissions share',
innerSize: '53%',
data: [
['Mobility', 28.9],
['Food', 23.29],
['Household', 33],
]
}]
});
所以,我要做的是获取条形图总和数据,例如。 “mobilityTotal”并将其输入到上面的饼图中——系列数据数组 [0] 'Mobility'。这个问题可能真的很基础。又是jsfiddle,请将运行窗口扩大到最大
【问题讨论】:
-
你开始很好,只是事件绑定中的一个错误,当修复 works fine... 添加一个值(应该是数组更多)。因此,只需将
$("#mobilityBox input:radio").click替换为$("#meansTransport input:radio").click.... 更好的是,不要使用点击,而是使用change事件和$(this).val()来获取选定的值。 -
嘿,检查了您的解决方案,它似乎所做的只是改变 Highcharts 条形图的行为方式,它只会向前构建;用户无法更改选择
-
嗨@isntlee,您能否更准确地描述您希望在
pie图表中显示的值?您能否在此处添加其余代码:jsfiddle.net/BlackLabel/6m4e8x0y/4701? -
嘿伙计,完成:jsfiddle.net/Isntlee/f1hw0ty6/6(您必须将查看窗口扩大到最大)。该计划是从每个条形图(也称为个人数据或浅蓝色图形数据)中获取总数并将其输入到饼图中。然后编写一个表达式来更改饼图中的中心文本以显示总数
标签: javascript jquery charts highcharts