Javascript 如何将多个flot饼图添加到具有自定义格式化程序的页面?
我遇到的问题是格式化程序。饼图呈现良好,但每个切片上显示的文本除外。我为格式化程序设置了两个单独的函数,但它似乎只使用了一个,这取决于我放置代码片段的顺序。以下是我所拥有的:Javascript 如何将多个flot饼图添加到具有自定义格式化程序的页面?,javascript,flot,pie-chart,Javascript,Flot,Pie Chart,我遇到的问题是格式化程序。饼图呈现良好,但每个切片上显示的文本除外。我为格式化程序设置了两个单独的函数,但它似乎只使用了一个,这取决于我放置代码片段的顺序。以下是我所拥有的: <script type="text/javascript"> $( document ).ready( function() { var d_pie = <?= json_encode( $plots ); ?>, d_pie2 = <?= j
<script type="text/javascript">
$( document ).ready( function() {
var d_pie = <?= json_encode( $plots ); ?>,
d_pie2 = <?= json_encode( $requested_array ) ?>,
pie1_formatter = function( label, series ) {
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;"><strong>' + label + '</strong><br/>' + series.data[0][1] + ' ' + ( series.data[0][1] == 1 ? 'vote' : 'votes' ) + '</div>';
},
pie2_formatter = function( label, series ) {
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;"><strong>' + label + '</strong><br/>' + series.data[0][1] + '%</div>';
};
$.plot( '#chart_pie', d_pie, $.extend( true, {}, Plugins.getFlotDefaults(), {
series: {
pie: {
show: true,
radius: 1,
label: {
show: true,
radius: 2 / 3,
formatter: function( label, series ) {
return pie1_formatter( label, series );
},
threshold: 0.1
}
}
},
grid: { hoverable: true },
tooltip: true,
tooltipOpts: {
content: '%p.0%, %s',
shifts: {
x: 0,
y: -20
}
}
} ) );
$.plot( '#chart_pie2', d_pie2, $.extend( true, {}, Plugins.getFlotDefaults(), {
series: {
pie: {
show: true,
radius: 1,
label: {
show: true,
radius: 2 / 3,
formatter: function( label, series ) {
return pie2_formatter( label, series );
},
threshold: 0.1
}
}
},
grid: { hoverable: true },
tooltip: true,
tooltipOpts: {
content: '%p.0%, %s',
shifts: {
x: 0,
y: -20
}
}
} ) );
} );
</script>
结果是两个饼图都将%放在值后面。对于第一个饼图,它将显示票数以及%符号,但第二个饼图将显示正确的百分比值。有没有办法强迫第一个饼图在%之后显示投票/投票?这是一个非常古老的问题,但我假设如果我替换它:
formatter: function( label, series ) {
return pie2_formatter( label, series );
},
与:
这会奏效的。为了不让这个问题成为一个悬而未决的问题,我将回答并标记为答案。还有一些您没有向我们展示的东西。上面的代码按原样工作:,我想可能是您使用了$.extend,但这似乎也适用。如果您只使用formatter:pie1_formatter和formatter:pie2_formatter而不是将其包装到另一个函数中会怎么样?现在我看到它在该页面上工作,我完全不明白它为什么不工作。如果我切换两个$.plot调用,它会显示两个都有x个投票。你使用的是什么版本的Flot和pie插件?
formatter: pie2_formatter,