Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将多个flot饼图添加到具有自定义格式化程序的页面?_Javascript_Flot_Pie Chart - Fatal编程技术网

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,